当前位置: 首页 > news >正文

1759. 统计同质子字符串的数目

https://leetcode.cn/problems/count-number-of-homogenous-substrings/description/

1. 暴力解法:

class Solution:
    def countHomogenous(self, s: str) -> int:
        n = 0
        for i in range(len(s)):
            for j in range(i, len(s)):
                sub_s = s[i:j]
                if j == i:
                    n += 1
                elif s[j] == s[i]:
                    n += 1
                else:
                    break
        return n % (10 ** 9 + 7)

时间复杂度:O(n^2)

2. 双指针解法

核心思想是,计算以j为结尾,开头在i以后的同质字符串数目

class Solution:
    def countHomogenous(self, s: str) -> int:
        n = 0
        i = 0
        j = 0
        is_str = True
        while i < len(s) and j < len(s):
            if i == j: # 字母本身
                n += 1
                j += 1
            elif s[j] == s[j - 1]: # 连续字符串
                temp_len = j - i + 1
                n += temp_len
                j += 1
            else:
                i = j

        return n % (10 ** 9 + 7)

时间复杂度 O(n)

3. 官方优雅解法

class Solution:
    def countHomogenous(self, s: str) -> int:
        n = 0
        for k, sub_s in groupby(s):
            sub_s = list(sub_s)
            temp_len = len(sub_s)
            n += (temp_len + 1) * temp_len // 2


        return n % (10 ** 9 + 7)

时间复杂度 O(n)


文章转载自:
http://assured.wkuuf.cn
http://cavatina.wkuuf.cn
http://atavic.wkuuf.cn
http://cge.wkuuf.cn
http://bobstay.wkuuf.cn
http://biosystematics.wkuuf.cn
http://aflare.wkuuf.cn
http://anthelix.wkuuf.cn
http://caesious.wkuuf.cn
http://baathist.wkuuf.cn
http://associability.wkuuf.cn
http://asparagus.wkuuf.cn
http://asc.wkuuf.cn
http://camelry.wkuuf.cn
http://chough.wkuuf.cn
http://casuist.wkuuf.cn
http://besprinkle.wkuuf.cn
http://adulterine.wkuuf.cn
http://asafoetida.wkuuf.cn
http://balladeer.wkuuf.cn
http://apennines.wkuuf.cn
http://acidophilus.wkuuf.cn
http://amicable.wkuuf.cn
http://aggressor.wkuuf.cn
http://bandobast.wkuuf.cn
http://chromogen.wkuuf.cn
http://bootlegger.wkuuf.cn
http://chita.wkuuf.cn
http://brassart.wkuuf.cn
http://banish.wkuuf.cn
http://www.dtcms.com/a/110268.html

相关文章:

  • 【深度学习】tf.math.multiply与tf.multiply有啥区别?
  • 在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性
  • 【设计模式】设计模式六大原则
  • 《Golang高性能网络编程:构建低延迟服务器应用》
  • docker导出image再导入到其它docker中
  • openfga-spring-boot3-starter自己封装
  • SAP CEO引领云端与AI转型
  • rk3588配置静态IP和DNS
  • 运筹帷幄:制胜软件开发
  • K8s的资源管理
  • Spring Boot + MySQL + MyBatis(注解和XML配置两种方式)集成Redis的完整启用及配置详解,包含代码示例、注释说明和表格总结
  • AI设计再现新引擎,科技创新又添新动能——广东省首家行业AI设计工程中心获批成立
  • 力扣刷题——2331.计算布尔二叉树的值
  • 【AI视频】度加视频测试
  • HTML jQuery PDF Annotation plugin library free online API examples
  • 蓝桥杯常用算法介绍:动态规划(DP)
  • 自动驾驶中的实时挑战:如何优化车辆动力学模型
  • YOLO系列论文图表绘制代码
  • BFC特性,开启BFC的方法,怪异盒子模型
  • 如何用 Three.js 和 Vue 3 实现 3D 商品展示
  • Java面试黄金宝典31
  • C语言--统计字符串中最长的单词
  • [leetcode]queue的操作的回顾
  • 【CMOS输出缓冲器驱动强度】
  • 系统架构设计理论之架构风格与模式(分层、MVC、微服务、事件驱动)
  • Android URL中+转义之后导致服务器请求无法获得正确的参数值
  • LeetCode算法题(Go语言实现)_28
  • 【电平转换原理】
  • WinDbg. From A to Z! 笔记(下)
  • 大坑!GaussDB数据库批量插入数据变只读