SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签92

  • 分类29

  • 归档357

  • 关于

  • lab

  • 搜索

LeetCode:696-计数二进制子串

发表于 2020-08-10 更新于 2020-09-12 分类于 计算机 , 算法题 , LeetCode 阅读次数: Valine:
本文字数: 820 阅读时长 ≈ 1 分钟

LeetCode题目汇总

题目描述

给定一个字符串 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”字符。

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
int countBinarySubstrings(string s) {
int ptr = 0, n = s.size(), last = 0, ans = 0;
while (ptr < n) {
char c = s[ptr];
int count = 0;
while (ptr < n && s[ptr] == c) {
++ptr;
++count;
}
ans += min(count, last);
last = count;
}
return ans;
}
};
-------- 本文结束 感谢阅读 --------
相关文章
  • LeetCode:647-回文子串
  • LeetCode:43-字符串相乘
  • LeetCode:415-字符串相加
  • LeetCode:1529-灯泡开关IV
  • LeetCode:1525-字符串的好分割数目
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: LeetCode:696-计数二进制子串
  • 本文作者: SiriYang
  • 创建时间: 2020年08月10日 - 12时08分
  • 修改时间: 2020年09月12日 - 19时09分
  • 本文链接: https://blog.siriyang.cn/posts/20200810124339id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
算法题 LeetCode 算法:字符串
LeetCode:130-被围绕的区域
SiriBlog一周年总结
SiriYang

SiriYang

大数据研究生
357 日志
29 分类
92 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 打赏记录
  • 作品商铺

蜀ICP备19008337号 © 2019 – 2021 SiriYang | 1.5m | 22:41
0%