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

Python | Leetcode Python题解之第395题至少有K个重复字符的最长子串

题目:

题解:

class Solution:
    def longestSubstring(self, s1: str, k: int) -> int:
        if k == 1: return len(s1)
        n = len(s1)
        res = 0
        for c in range(1, len(set(s1)) + 1):
            # 滑窗中字母种类个数恰好为 c
            freq = Counter()
            l = cnt = tcnt = 0    
            for r, ch in enumerate(s1):
                if freq[ch] == 0:
                    cnt += 1
                    tcnt += 1
                if freq[ch] == k - 1:
                    cnt -= 1
                freq[ch] += 1
                
                while tcnt > c:
                    lch = s1[l]
                    if freq[lch] == k: 
                        cnt += 1
                    if freq[lch] == 1:
                        tcnt -= 1
                        cnt -= 1
                    freq[lch] -= 1
                    l += 1
                if tcnt == c and cnt == 0:
                    res = max(res, r - l + 1)
        return res 

http://www.kler.cn/a/302926.html

相关文章:

  • 2024年11月12日Github流行趋势
  • 鸿蒙学习基本概念
  • 前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)
  • 《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明
  • K8资源之endpoint资源EP资源
  • FatLab:我的编程课程系列
  • WRF-LES与PALM微尺度气象大涡模拟、PALM静态数据预备、PALM驱动数据预报、PALM模拟
  • 软件交付文档
  • NAND NOR FLASH闪存产品的学习记录
  • 充电桩平台的优惠券功能如何设计
  • 【编程底层原理】Tomcat为何要打破双亲委派模式
  • 布局管理, 分割窗口, 停靠窗口, 堆栈窗口, 综合应用
  • 代码随想录算法训练营第14天|226. 翻转二叉树、101. 对称二叉树、104. 二叉树的最大深度、111. 二叉树的最小深度
  • 基于Java的建筑节能监测系统+公共建筑能耗监测系统
  • 【笔记】1.1 拉伸力-伸长(延伸)曲线和应力-应变曲线
  • QT使用相机拍照
  • 突破行业边界,构建可持续未来:2024生态系统架构创新与开放标准赋能全球业务增长
  • linux-L8.linux更改文件的拥有者
  • 解决idea git比对 contents have differences only in line separators
  • VLAN配置学习笔记
  • Redis 数据类型详解
  • 二叉排序树在实际生活应用中作用
  • 如何通过subprocess在数据采集中执行外部命令 —以微博为例
  • “勇者斗恶龙”即将上演,乐道L60剑指Model Y
  • EasyExcel 动态表头+表头合并
  • Vue2 和 Vue3 区别 — 源码深度解析