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 <= 100s[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).