class Solution {
public:
bool checkZeroOnes(string s) {
}
};
1869. 哪种连续子字符串更长
给你一个二进制字符串 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 。
示例 2:
输入:s = "111000" 输出:false 解释: 由1
组成的最长连续子字符串的长度是 3:"111000" 由0
组成的最长连续子字符串的长度是 3:"111000" 由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。
示例 3:
输入:s = "110100010" 输出:false 解释: 由1
组成的最长连续子字符串的长度是 2:"110100010" 由0
组成的最长连续子字符串的长度是 3:"110100010" 由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。
提示:
1 <= s.length <= 100
s[i]
不是 '0'
就是 '1'
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-08 17:53:58
func checkZeroOnes(s string) bool { curOne, curZero := 0, 0 maxOne, maxZero := 0, 0 for i := 0; i < len(s); i++ { if s[i] == '1' { curOne++ curZero = 0 } else { curZero++ curOne = 0 } maxOne = getMax(maxOne, curOne) maxZero = getMax(maxZero, curZero) } return maxOne > maxZero } func getMax(x, y int) int { if x > y { return x } return y }