给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。
例如,s = “110100010” 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3 。
注意,如果字符串中不存在 0 ,此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。
示例 1:
1 2 3 4 5 6
| 输入:s = "1101" 输出:true 解释: 由 1 组成的最长连续子字符串的长度是 2:"1101" 由 0 组成的最长连续子字符串的长度是 1:"1101" 由 1 组成的子字符串更长,故返回 true 。
|
示例 2:
1 2 3 4 5 6
| 输入:s = "111000" 输出:false 解释: 由 1 组成的最长连续子字符串的长度是 3:"111000" 由 0 组成的最长连续子字符串的长度是 3:"111000" 由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。
|
示例 3:
1 2 3 4 5 6
| 输入:s = "110100010" 输出:false 解释: 由 1 组成的最长连续子字符串的长度是 2:"110100010" 由 0 组成的最长连续子字符串的长度是 3:"110100010" 由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。
|
提示:
1 2
| 1 <= s.length <= 100 s[i] 不是 '0' 就是 '1'
|
C++代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public: bool checkZeroOnes(string s) { int oneMax = 0; int zeroMax = 0; for (int i = 0; i < s.size(); ) { int len = 0; if (s[i] == '0') { while (i < s.size() && s[i] == '0') { i++; len++; } zeroMax = max(len, zeroMax); } else { while (i < s.size() && s[i] == '1') { i++; len++; } oneMax = max(len, oneMax); } } return oneMax > zeroMax; } };
|