【LeetCode】5697. 检查二进制字符串字段

第231场周赛 5697. 检查二进制字符串字段

思路

不含前导零

  1. 第一个数必是1,所以从第二个数开始,出现数字0后就不能再出现1
  2. 统计数字1的个数,和最长1的子串比较,两者等于则符合要求

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution 
{
public:
bool checkOnesSegment(string s)
{
int n = s.size();
for (int i = 1; i < n; i++)
if (s[i-1]=='0' && s[i]=='1')
return false;
return true;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//内存消耗:6 MB
class Solution {
public:
bool checkOnesSegment(string s) {
int n=s.size();
if(n==1) return true;
int res=0;
int cnt=0;
int num=0;
for(int i=0;i<n;i++)
{
if(s[i]-'0'==1)
{
num++;
cnt++;
res=max(cnt,res);
}
else
cnt=0;
}
if(num>res) return false;
return true;
}
};