给你一个二进制字符串 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'
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)
}