696. 计数二进制子串 Krains 2020-08-10 09:42:23 字符串
时间:2022-07-23
本文章向大家介绍696. 计数二进制子串 Krains 2020-08-10 09:42:23 字符串,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 题目链接
仔细观察发现,连续0与连续1构成的串中其符合条件的子串的数目等于Min(n,m)Min(n,m)Min(n,m),n、m分别为连续0和1的个数。
对于这样的问题,解法有很多,简单的一种可以用额外的数组存一下连续0和连续1个数,然后然后遍历数组,统计相邻的最小值即可。
若不用额外空间,考虑的细节就多一点,以下给出了两种相似的解法,细节有所不同。
class Solution {
public int countBinarySubstrings(String s) {
int ans = 0;
int i = 0;
// pre表示之前一段连续1或0个数,cur为当前连续0或1的个数
int pre = 0, cur = 0;
while(i < s.length()){
char c = s.charAt(i);
while(i < s.length() && s.charAt(i) == c){
i++;
cur++;
}
ans += Math.min(pre, cur);
pre = cur;
cur = 0;
}
return ans;
}
}
class Solution {
public int countBinarySubstrings(String s) {
int ans = 0;
int pre = 0, cur = 1;
for(int i = 1; i < s.length(); i++){
if(s.charAt(i-1) == s.charAt(i)){
cur++;
}else{
ans += Math.min(pre, cur);
pre = cur;
cur = 1;
}
}
// 加上末尾未统计的
ans += Math.min(pre, cur);
return ans;
}
}
复杂度分析
- 时间复杂度:O(1)O(1)O(1)
- 空间复杂度:O(1)O(1)O(1)
- 小学生都学Python了,你还不知道怎么开始
- java实现最基础的socket网络通信
- struts的声明式异常处理 demo
- npm管理工具介绍
- 对windows密码抓取神器mimikatz的逆向分析
- Keras中神经网络模型的5阶段生命周期
- java的断言(assert)
- Android studio中Rendering Problems不能可视化操作的解决办法
- 使用 Referer Meta 标签控制 referer—详解 referrer-policy
- 网站抓取引子 - 获得网页中的表格
- Android Firebase 服务简介
- CVE-2015-0393:Oracle发布严重安全漏洞预警
- 研究人员发现一种利用Siri窃取苹果iPhone/iPad数据的方法
- 关于Python中的__main__和编程模板
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 私藏的5个好用的Pandas函数!
- 漫画:如何在数组中找到和为 “特定值” 的两个数?
- 当你在百度搜索关键字的时候,哪个网站会排在最前面?今天给大家科普一下“网站SEO”
- Mysql系列第十九讲 异常捕获及处理详解
- 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
- jQuery 事件对象,拷贝对象,多库共存
- jQuery 事件注册与事件处理
- v-charts 修改文本颜色
- 使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)
- 竞赛比完,代码、模型怎么处理?Kaggle大神:别删,这都是宝藏
- 显示DataGrid序号的一个适用的方法
- SAP Spartacus cms-components.service.ts里的config.cmsComponents
- ng-template和ng-container的嵌套使用
- SAP Spartacus pageSlot一览
- Angular @Hostbinding工作原理