LeetCode每日一题- day9
新手入坑LeetCode,每天打卡一道题
算法不一定很好,只是我自己的一个水平体现,做个自己刷题的记录,欢迎交流学习
(尽量AC LeetCode官方的每日一题)
欢迎交流学习!
题目:1784. 检查二进制字符串字段
给你一个二进制字符串 s ,该字符串 不含前导零 。
如果 s 包含 零个或一个由连续的 ‘1’ 组成的字段 ,返回 true 。否则,返回 false 。
如果 s 中 由连续若干个 ‘1’ 组成的字段 数量不超过 1,返回 true 。否则,返回 false 。
思路:
注意:不含前导零
,换言之:该字符串一定满足s[0] == '1'
我们只需要记录 0是否出现过
:
- 如果出现过
- 后面如果再出现
1
,就返回false
- 如果后面没有出现
1
,最终返回true
- 后面如果再出现
- 如果没出现过: 返回
true
代码:
class Solution {
public:
bool checkOnesSegment(string s) {
// 法一:
// int n = s.size();
// int num = 0;//记录0 是否出现过
// for(int i = 0; i < n; i ++){
// if(s[i] == '0'){
// num ++;
// }else if(s[i] == '1' && num){//0后面又出现了1
// return false;
// }
// }
// return true;
//法二
//直接判断是否存在'01'
int n = s.size();
for(int i = 0; i < n - 1; i ++){
if(s[i] == '0' && s[i + 1] == '1') return false ;
}
return true;
}
};