Formatted question description: https://leetcode.ca/all/1784.html

1784. Check if Binary String Has at Most One Segment of Ones

Level

Easy

Description

Given a binary string s without leading zeros, return true if s contains at most one contiguous segment of ones. Otherwise, return false.

Example 1:

Input: s = “1001”

Output: false

Explanation: The ones do not form a contiguous segment.

Example 2:

Input: s = “110”

Output: true

Constraints:

  • 1 <= s.length <= 100
  • s[i] is either '0' or '1'.
  • s[0] is '1'.

Solution

Loop over s from left to right. For each character, if the character is '1' and its previous character is '0', then the current character is the first character of a segment of ones. Return true only if the number of segments of ones is at most 1.

class Solution {
    public boolean checkOnesSegment(String s) {
        int onesSegments = 0;
        int length = s.length();
        for (int i = 0; i < length; i++) {
            char c = s.charAt(i);
            if (c == '1') {
                if (i == 0 || s.charAt(i - 1) == '0')
                    onesSegments++;
            }
        }
        return onesSegments <= 1;
    }
}

All Problems

All Solutions