博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
696. Count Binary Substrings - LeetCode
阅读量:5226 次
发布时间:2019-06-14

本文共 1214 字,大约阅读时间需要 4 分钟。

Question

2018082803.png

Example1

Input: "00110011"Output: 6Explanation: There are 6 substrings that have equal number of consecutive 1's and 0's: "0011", "01", "1100", "10", "0011", and "01".Notice that some of these substrings repeat and are counted the number of times they occur.Also, "00110011" is not a valid substring because all the 0's (and 1's) are not grouped together.

Example2

Input: "10101"Output: 4Explanation: There are 4 substrings: "10", "01", "10", "01" that have equal number of consecutive 1's and 0's.

Solution

题目大意:

给一个只有01组成的字符串,求子串数,子串必须满足

  1. 0和1出现次数一样
  2. 保证0连续1连续

思路:

参考下面参考链接的思路:

上一个连续子串长度记为preRunLength,当前连续子串长度记为curRunLength,res记为满足条件的子串数

Java实现:

public int countBinarySubstrings(String s) {    int preRunLength = 0, curRunLength = 1, res = 0;    for (int i = 1; i < s.length(); i++) {        if (s.charAt(i) == s.charAt(i - 1)) { // 当前字符与上一字符相同,表示当前连续子串未断            curRunLength++; // 当前连续子串长度加1        } else { // 当前字符与上一字符不同,表示当前连续子串结束            preRunLength = curRunLength; // 当前连续子串长度变为上一个连续子串长度            curRunLength = 1; // 当前连续子串长度为1        }        if (preRunLength >= curRunLength) res++; // 当前连续子串长度小于上一个连续子串长度就满足要求    }    return res;}

Ref

转载于:https://www.cnblogs.com/okokabcd/p/9550486.html

你可能感兴趣的文章
what's the 单例模式
查看>>
Leetcode OJ : Repeated DNA Sequences hash python solution
查看>>
数据链路层-设计目标
查看>>
记一次Linux下给硬盘分区格式化操作
查看>>
有标号的二分图计数 [生成函数 多项式]
查看>>
通过软链接实现同一文件夹被不同路径下程序调用
查看>>
n*m的矩阵,行和列都递增有序,求是否出现target元素(面试题)
查看>>
微信登录
查看>>
Docker入门之七Dockerfile
查看>>
第一周博客
查看>>
简单干净的C#方法设计案例:SFCUI.AjaxValue()之三
查看>>
随机产生13个0~51不同的随机数 -思想(定义参考系)
查看>>
关于使用MyEclipse自动生成Hibernate和Struts出现的jar不兼容的问题(antlr.collections.AST.getLine()I)...
查看>>
setTimeout 和 setInterval 你真的知道了吗
查看>>
UWP listview
查看>>
分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
查看>>
关于后台系统自动生成的一点思考(转载)
查看>>
汇编语言-求分段函数值
查看>>
如何简单快速的修改Bootstrap
查看>>
多类型多布局Adapter的封装之路
查看>>