696. 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”字符。
字符分组
我们可以将字符串 sss 按照 000 和 111 的连续段分组,存在 counts\rm countscounts 数组中,例如 s=00111011s = 00111011s=00111011,可以得到这样的 counts\rm countscounts 数组:counts={2,3,1,2}{\rm counts} = \{2, 3, 1, 2\}counts={2,3,1,2}。
这里 counts\rm countscounts 数组中两个相邻的数一定代表的是两种不同的字符。假设 counts\rm countscounts 数组中两个相邻的数字为 uuu 或者 vvv,它们对应着 uuu 个 000 和 vvv 个 111,或者 uuu 个 111 和 vvv 个 000。它们能组成的满足条件的子串数目为 min{u,v}\min \{ u, v \}min{u,v},即一对相邻的数字对答案的贡献。
对于某一个位置 iii,其实我们只关心 i−1i - 1i−1 位置的 counts\rm countscounts 值是多少,所以可以用一个 last\rm lastlast 变量来维护当前位置的前一个位置,这样可以省去一个 counts\rm countscounts 数组的空间。
Code
def countBinarySubstrings(self, s: str) -> int:ans, cur, last, length = 0, 0, 0, len(s)while cur < length:c, count = s[cur], 0while cur < length and s[cur] == c:cur += 1count += 1ans += min(count, last)last = countreturn ans
复杂度分析
- 时间复杂度:O(n)O(n)O(n)。
- 空间复杂度:O(1)O(1)O(1)。
696. Count Binary Substrings 计数二进制子串相关推荐
- LeetCode刷题记录6——696. Count Binary Substrings(easy)
LeetCode刷题记录6--696. Count Binary Substrings(easy) 目录 LeetCode刷题记录6--696. Count Binary Substrings(eas ...
- LeetCode - Easy - 696. Count Binary Substrings
Topic String Description https://leetcode.com/problems/count-binary-substrings/ Give a string s, cou ...
- LeetCode 696. Count Binary Substrings
题目: Give a string s, count the number of non-empty (contiguous) substrings that have the same number ...
- LeetCode 696. 计数二进制子串
1. 题目 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的. 重复出现的子串要计算它们出现的次数. 示例 1 : 输入: & ...
- leetcode696. 计数二进制子串
给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的. 重复出现的子串要计算它们出现的次数. 示例 1 : 输入: "0 ...
- 一天一大 lee(计数二进制子串)难度:简单-Day20200810
题目: 给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是组合在一起的. 重复出现的子串要计算它们出现的次数. 示例 示例 ...
- binary - 从(向)二进制串插入和提取字段 / BINARY FORMAT BINARY SCAN
binary - 从(向)二进制串插入和提取字段??? SYNOPSISbinary format formatString ?arg arg ...?binary scan string forma ...
- SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子
一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ...
- SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子...
一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ...
最新文章
- 为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
- cdh 安装_0623-6.2.0-如何在CDH中安装CFM
- mysql场景测试_【干货】不同场景下 如何进行MySQL迁移
- Fashion-MNIST数据集离线加载办法
- SIP代理服务器(2)
- Makefile学习之通配符和自动变量
- SpringMVC之Controller和参数绑定
- Table of Contents
- java游戏下载网址_手机java游戏下载网站
- nodejs、express下载和配置
- 简易局域网聊天java_简单的局域网聊天程序(java版本的)
- 离线安装Python包的三种方法
- 如何取消html中页眉的下划线,怎么取消页眉页脚的横线_怎样取消页眉上的横线-win7之家...
- Layui数据表格每一行动态显示倒计时
- iframe中加载html,在iframe中加载外部html并访问内容
- 小明Q2投影仪好用吗?小明Q2和哈趣K1哪个更值得入手?
- LED和LCD,LED和OLED,AMOLED和OLED有什么区别
- 计算机及通讯公司转正申请(范文)
- win10内存占用率过高怎么办_win10 软件推荐
- 去除空格,水平制表符:CHAR(9)、换行符:CHAR(10)、回车符:CHAR(13)
热门文章
- 【BZOJ 1096】[ZJOI2007]仓库建设
- RPM安装包-Spec文件參数具体解释与演示样例分析
- SQL SERVER – Beginning of SQL Server Architecture – Terminology – Guest Post
- silverlight 使用IValueConverter 转换
- 使用asp.net中的跟踪功能
- 活体检测方法概述与总结
- scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
- Java黑皮书课后题第10章:*10.14(MyDate类)设计一个名为MyDate的类
- oracle jdbctype null,Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull
- 日志 php_高性能的PHP日志系统 SeasLog 使用