Description
https://leetcode.com/problems/check-if-binary-string-has-at-most-one-segment-of-ones/
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'
.
Explanation
Count ones as segments and check how many segments we got from the string
Python Solution
class Solution:
def checkOnesSegment(self, s: str) -> bool:
segments = []
start = None
end = None
for i, c in enumerate(s):
print (start)
if c == '1':
if start == None:
start = i
end = i
else:
end = i
else:
if start != None and end != None:
segments.append([start, end])
start = None
end = None
if start != None and end != None:
segments.append([start, end])
return len(segments) == 1
- Time Complexity: O(N).
- Space Complexity: O(N).