LeetCode每日一题- day9

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

猜你喜欢

转载自blog.csdn.net/Nmj_World/article/details/127151265