给你一个二进制字符串 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 <= 100s[i]不是'0'就是'1'
package main
import (
"fmt"
"strings"
)
func checkZeroOnes(s string) bool {
sarr := strings.Split(s, "")
mx0, mx1 := 0, 0
cnt := 0
prev := "#"
for _, ch := range sarr {
if prev == ch {
cnt += 1
} else {
if prev == "0" {
mx0 = max(mx0, cnt)
} else if prev == "1" {
mx1 = max(mx1, cnt)
}
cnt = 1
}
prev = ch
}
if prev == "0" {
mx0 = max(mx0, cnt)
} else if prev == "1" {
mx1 = max(mx1, cnt)
}
return mx1 > mx0
}
func max(x, y int) int {
if x > y {
return x
}
return y
}
func main() {
s := "1101"
res := checkZeroOnes(s)
fmt.Println(res)
}
本文探讨了如何判断给定二进制字符串中1组成最长连续子串是否比0的更长。通过示例和代码实现,展示了如何通过计数和比较长度来确定结果。

被折叠的 条评论
为什么被折叠?



