leetcode 696. 计数二进制子串

news/2024/7/6 4:41:52 标签: 后端

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 696. 计数二进制子串.


题目描述

  1. 计数二进制子串 给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的。

重复出现(不同位置)的子串也要统计它们出现的次数。

示例 1:

输入:s = "00110011" 输出:6 解释:6 个子串满足具有相同数量的连续 1 和 0 :"0011"、"01"、"1100"、"10"、"0011" 和 "01" 。 注意,一些重复出现的子串(不同位置)要统计它们出现的次数。 另外,"00110011" 不是有效的子串,因为所有的 0(还有 1 )没有组合在一起。 示例 2:

输入:s = "10101" 输出:4 解释:有 4 个子串:"10"、"01"、"10"、"01" ,具有相同数量的连续 1 和 0 。

提示:

1 <= s.length <= 105 s[i] 为 '0' 或 '1'

解题思路

法1

分组计算\

  1. 将字符串不同区域的0,1进行分组化(001101010)-->(2,2,1,1,1,1,1)
  2. 计算数量,2,
  • 2间有两个0011与01,
  • 2,1.间有一个(取小的)
  • 1,1间有一个 一共算来有七个
  • 时间复杂度(O(n))
  • 空间复杂度(O(n))

执行结果

法1

func countBinarySubstrings(s string) int {
    var ans, lastCount, curCount int
    for i := 0; i < len(s); {
        curCount = 1
        for j := i + 1; j < len(s) && s[j] == s[i]; j++ {
            curCount++
        }
        ans += min(lastCount, curCount)
        lastCount = curCount
        i += curCount
    }
    return ans
}

func min(a, b int) int {//取小的数
    if a < b {
        return a
    }
    return b
}

优化


本文由 mdnice 多平台发布


http://www.niftyadmin.cn/n/260500.html

相关文章

JUnit 5 参数化测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FutGAReQ-1682390296590)(https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/76ce3a3756c54822ba10db2c9a0e94c9~noop.image?_iz58558&fromarticle.pc_detail&x-expires1682930831&x-s…

vue.js之componentd、methods和watch的区别详解?

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言计算属性和 methods的区别&#xff1f;对于Computed:对于Watch:**总结:**运用场景: Computed 和 Methods 的区别 前言 计算属性、methods和watch是vue.js的三个…

【网络进阶】五种IO网络模型(一)

文章目录 1. 阻塞IO2. 非阻塞IO 1. 阻塞IO 在Linux中&#xff0c;默认情况下&#xff0c;所有的套接字&#xff08;socket&#xff09;都是阻塞的。典型的读取操作流程如下&#xff1a; 当用户进程调用read系统调用时&#xff0c;内核开始执行I/O的第一个阶段&#xff0c;即…

智慧园区数字化转型下的移动App发展

随着智慧城市的建设和智慧园区的崛起&#xff0c;智慧园区数字一体化建设成为园区发展的重心&#xff0c;当然数字转型离不开移动应用的整合服务。 在过去的几年中&#xff0c;智慧园区移动应用已经发展成为园区管理和服务的重要手段之一&#xff0c;为企业和员工提供了更加便…

mysql的读提交与可重复读

前景介绍 隔离级别脏读可能性不可重复读可能性幻读可能性加读锁READ UNCOMMITTEDYESYESYESNOREAD COMMITTEDNOYESYESNOREPEATABLE READNONOYESNOSERALIZABLENONONONO mysql事务 READ COMMITTED 时间事务1事务2事务3T1beginbeginbeginT2update wx_va set value “TT1” wher…

java md5 sha256

省流 String md5 DigestUtils.md5Hex(inputStream);String md5 DigestUtils.md5Hex(str);String md5 DigestUtils.md5Hex(byteArray); 这是commons-codec.jar JAVA中获取文件MD5值的四种方法 - 腾讯云开发者社区-腾讯云 (tencent.com) 一般上传文件&#xff0c;会用文…

Hive 常用日期函数

目录 前言常用日期函数1. to_date:抽取日期部分2. unix_timestamp:返回当前或者指定时间的时间戳3. from_unixtime:将时间戳转为日期格式4. current_date: 当前日期5. current_timestamp: 当前日期+时间6. year:获取年7. month:获取月8. day:获取日9. hour:获取时10. mi…

前端技术的积累和实践总结

在前端领域&#xff0c;技术的更新换代非常快&#xff0c;对于一个前端开发者来说&#xff0c;不断学习和积累是非常重要的。本篇文章将分享前端技术的积累和实践经验&#xff0c;包括如何提高问题解决能力、如何阅读源代码、如何跟踪技术趋势等内容&#xff0c;帮助读者更好地…