Given a binary string s
, return true
if the longest contiguous segment of 1
's is strictly longer than the longest contiguous segment of 0
's in s
, or return false
otherwise.
- For example, in
s = "110100010"
the longest continuous segment of1
s has length2
, and the longest continuous segment of0
s has length3
.
Note that if there are no 0
's, then the longest continuous segment of 0
's is considered to have a length 0
. The same applies if there is no 1
's.
Example 1:
Input: s = "1101"
Output: true
Explanation:
The longest contiguous segment of 1s has length 2: "1101"
The longest contiguous segment of 0s has length 1: "1101"
The segment of 1s is longer, so return true.
Example 2:
Input: s = "111000"
Output: false
Explanation:
The longest contiguous segment of 1s has length 3: "111000"
The longest contiguous segment of 0s has length 3: "111000"
The segment of 1s is not longer, so return false.
Example 3:
Input: s = "110100010"
Output: false
Explanation:
The longest contiguous segment of 1s has length 2: "110100010"
The longest contiguous segment of 0s has length 3: "110100010"
The segment of 1s is not longer, so return false.
Constraints:
-
1 <= s.length <= 100
-
s[i]
is either'0'
or'1'
.
SOLUTION:
class Solution:
def checkZeroOnes(self, s: str) -> bool:
s += "x"
longest = [0, 0]
curr = [0, 0]
for c in s:
if c == "x":
longest[0] = max(longest[0], curr[0])
longest[1] = max(longest[1], curr[1])
elif c == "1":
longest[0] = max(longest[0], curr[0])
curr[0] = 0
curr[1] += 1
elif c == "0":
longest[1] = max(longest[1], curr[1])
curr[1] = 0
curr[0] += 1
return longest[1] > longest[0]
Top comments (0)