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 | |