入门力扣自学笔记167 C++ (题目编号:1784)

1784. 检查二进制字符串字段

题目:

给你一个二进制字符串 s ,该字符串 不含前导零 。

如果 s 包含 零个或一个由连续的 '1' 组成的字段 ,返回 true​​​ 。否则,返回 false 。

如果 s 中 由连续若干个 '1' 组成的字段 数量不超过 1,返回 true​​​ 。否则,返回 false 。


示例 1:

输入:s = "1001"
输出:false
解释:由连续若干个 '1' 组成的字段数量为 2,返回 false


示例 2:

输入:s = "110"
输出:true


提示:

1 <= s.length <= 100
s[i]​​​​ 为 '0' 或 '1'
s[0] 为 '1'


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-binary-string-has-at-most-one-segment-of-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先,这道题说是一个二进制字符串,所以首字母肯定是1。

其次,我们遍历整个字符串,只要保证从索引1开始的数字如果是1,且前面数字也是1即可保证题目的要求。

最后,用一个值记录出现1字段的个数,在程序最后进行判断即可。


代码:

class Solution {
public:
    bool checkOnesSegment(string s) {
        int ok = 1;
        for(int i = 1;i < s.size();i++)
        {
            if(s[i] == '1' && s[i-1] != '1')
                ok += 1;
        }
        if(ok > 1)
            return false;
        return true;
    }
};

你可能感兴趣的:(力扣算法学习,leetcode,算法,c++)