zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 696 计数二进制子串(暴力)

    696. 计数二进制子串

    给定一个字符串 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) {
            char[] chars = s.toCharArray();
            int res = 0;
            int cur = 1;
            int pre = 0;
            char value = chars[0];
    
            for (int i = 1; i < chars.length; i++) {
                //当前位和上一位不等的时候,就可以算作一次
                
                if(value == chars[i])
                    ++cur;
                else {
                    if(pre > 0) {
                        res += Math.min(pre,cur);
                    }
                    pre = cur;
                    cur = 1;
                }
                value = chars[i];
            }
            if(pre > 0) res += Math.min(cur,pre);
            return res;
        }
    }
    
  • 相关阅读:
    C#中方法的分类、定义、调用(3)
    C#中的输入和输出与类和对象(2)
    .net中的数据类型与数据转换(1)
    android第二章控件2
    android第二章控件1
    安卓 第一章
    二进制文件的读写与小结
    字符流
    File类与字节流
    字节流
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074789.html
Copyright © 2011-2022 走看看