zoukankan      html  css  js  c++  java
  • Leetcode696.Count Binary Substrings计算二进制字串

    给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。

    重复出现的子串要计算它们出现的次数。

    示例 1 :

    输入: "00110011" 输出: 6 解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。 请注意,一些重复出现的子串要计算它们出现的次数。 另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。

    示例 2 :

    输入: "10101" 输出: 4 解释: 有4个子串:“10”,“01”,“10”,“01”,它们具有相同数量的连续1和0。

    注意:

    • s.length 在1到50,000之间。
    • s 只包含“0”或“1”字符。

    class Solution {
    public:
        int countBinarySubstrings(string s) {
            int len = s.size();
            if(len == 0)
                return 0;
            int flag = -1;
            int lastcnt = -1;
            int cnt = 0;
            int res = 0;
            for(int i = 0; i < len; i++)
            {
                if(flag == -1)
                {
                    flag = s[i] - '0';
                    cnt++;
                    continue;
                }
                else
                {
                    if(flag == s[i] - '0')
                    {
                        cnt++;
                        if(cnt <= lastcnt)
                            res++;
                        continue;
                    }
                    else
                    {
                        lastcnt = cnt;
                        cnt = 1;
                        flag = flag ^ 1;
                        if(cnt <= lastcnt)
                            res++;
                    }
                }
            }
            return res;
        }
    };
  • 相关阅读:
    第十三周助教作业
    【西北师大-19软工】第五次作业成绩汇总
    第十二周助教工作总结
    第十一周助教工作总结
    第九周助教工作总结
    第八周助教工作总结
    第七周助教工作总结
    SQLAlchemy 学习笔记(二):ORM 基础
    WebSocket 与 HTTP/2
    Chrome 与 Firefox-Dev 的 DevTools
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434007.html
Copyright © 2011-2022 走看看