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;
        }
    };
  • 相关阅读:
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业01--线性表
    C博客作业05--指针
    C语言博客作业04--数组
    C博客作业03--函数
    博客作业——循环结构
    C博客作业05-指针
    C博客作业04--数组
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434007.html
Copyright © 2011-2022 走看看