Problem
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 (Java)
class Solution {
public boolean checkOnesSegment(String s) {
boolean metOne = false;
int i = 0;
while (i < s.length()) {
if (s.charAt(i) == '1' && metOne) {
return false;
}
if (s.charAt(i) == '1') {
metOne = true;
while (i < s.length() && s.charAt(i) == '1') {
i++;
}
}
i++;
}
return true;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).