题目
给你一个二进制字符串 s
。如果字符串中由 1
组成的 最长 连续子字符串 严格长于 由 0
组成的 最长 连续子字符串,返回 true
;否则,返回 false
。
- 例如,
s = "110100010"
中,由1
组成的最长连续子字符串的长度是2
,由0
组成的最长连续子字符串的长度是3
。
注意,如果字符串中不存在 0
,此时认为由 0
组成的最长连续子字符串的长度是 0
。字符串中不存在 1
的情况也适用此规则。
示例 1:
输入:s = "1101"
输出:true
解释:
由 1
组成的最长连续子字符串的长度是 2:"1101"
由 0
组成的最长连续子字符串的长度是 1:"1101"
由 1 组成的子字符串更长,故返回 true 。
思路
通过遍历字符串,记录当前连续1和0的个数,然后比较最大的连续1和0的个数。最终,通过返回比较的结果,确定了给定字符串中0和1的数量是否相等。
class Solution { public boolean checkZeroOnes(String s) { int curOne=0,maxOne=0; int curZero=0,maxZero=0; for(char c : s.toCharArray()){ if(c=='1'){ curOne++; curZero=0; } if(c=='0'){ curZero++; curOne=0; } maxOne = Math.max(maxOne, curOne); maxZero = Math.max(maxZero, curZero); } return maxOne>maxZero; } }