1784. 检查二进制字符串字段
题目描述
给你一个二进制字符串 s ,该字符串 不含前导零 。
如果 s 包含 零个或一个由连续的 '1' 组成的字段 ,返回 true 。否则,返回 false 。
示例 1:
输入:s = "1001" 输出:false 解释:由连续若干个 '1' 组成的字段数量为 2,返回 false
示例 2:
输入:s = "110" 输出:true
提示:
1 <= s.length <= 100s[i] 为'0'或'1's[0]为'1'
解法
方法一:0 后面不能有 1
注意到字符串 $s$ 不含前导零,说明 $s$ 以 '1' 开头。
若字符串 $s$ 存在 "01" 串,那么 $s$ 就是形如 "1...01..." 的字符串,此时 $s$ 出现了至少两个连续的 '1' 片段,不满足题意,返回 false。
若字符串 $s$ 不存在 "01" 串,那么 $s$ 只能是形如 "1..1000..." 的字符串,此时 $s$ 只有一个连续的 '1' 片段,满足题意,返回 true。
因此,只需要判断字符串 $s$ 是否存在 "01" 串即可。
时间复杂度 $O(n)$。其中 $n$ 为字符串 $s$ 的长度。空间复杂度 $O(1)$。
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 | |
1 2 3 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 | |
方法二
1 2 3 | |