题目
1784. 检查二进制字符串字段【简单】
给你一个二进制字符串 s ,该字符串 不含前导零 。
如果 s 包含 零个或一个由连续的 ‘1’ 组成的字段 ,返回 true 。否则,返回 false 。
如果 s 中 由连续若干个 ‘1’ 组成的字段 数量不超过 1,返回 true 。否则,返回 false 。
示例 1:
输入:s = “1001” 输出:false 解释:由连续若干个 ‘1’ 组成的字段数量为 2,返回 false
示例 2:
输入:s = “110” 输出:true
思路
简单的模拟题,设置两个符号位,分别表示当前字符是否在连续1中,以及是否已经出现过连续1
代码
class Solution {
public:
bool checkOnesSegment(string s) {
bool first = false;//标记是否已经出现过连续1
bool flag = false;//标记当前字符是否在连续1中
for(auto ch:s){
if(ch == '1' && flag == false && first == false){//第一次出现连续1
first = true;
flag = true;
}
if(ch == '1' && flag == false && first == true){//第二次出现连续1
return false;
}
if(ch == '0'){
flag = false;
}
}
return true;
}
};