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

LeetCode 395. 至少有K个重复字符的最长子串

解题思路

一道滑动窗口题型,不过滑动窗口的长度是不同种类元素的个数。
这里需要定义两个变量 cnt,overk。overk表示的是满足大于k的字符数,
cnt表示的是该窗口中不同元素的个数且cnt>=1&&cnt<=26。

相关代码

class Solution {
    public int longestSubstring(String s, int k) {
        char c[] = s.toCharArray(); 
        int res=0;
        //length表示的是该小段区间 规定的不同种类元素的个数
        for(int length=1;length<=26;length++){
            int a[] = new int[26];
            //overk表示的是满足大于k的字符数
            //cnt表示的是该窗口中不同元素的个数
            int cnt=0;
            int overk=0; 
            for(int i=0,j=0;i<c.length;i++){
                a[c[i]-'a']++;
                if(a[c[i]-'a']==1) cnt++;
                if(a[c[i]-'a']==k) overk++; 
                while(j<i&&cnt>length){
                    if(a[c[j]-'a']==1) cnt--;
                    if(a[c[j]-'a']==k) overk--;
                    a[c[j]-'a']--;
                    j++;
                }
                if(overk==length) res = Math.max(res,i-j+1);
            }
        }
        return res;
    }
}

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

相关文章:

  • RoketMQ主从搭建
  • c语言:于龙加
  • 《工厂模式(极简c++)》
  • 【 代码随想录算法训练营第二十四天 | LeetCode77. 组合 】
  • 网络编程套接字——实现简单的UDP网络程序
  • 【网络原理】TCP 协议中比较重要的一些特性(三)
  • 【LeetCode热题100】146. LRU 缓存(链表)
  • HarmonyOS(二十)——管理应用拥有的状态之LocalStorage(页面级UI状态存储)
  • Ubuntu 虚拟机安装
  • MySQL 数据库设计范式
  • openstack调整虚拟机CPU 内存 磁盘 --来自gpt
  • AI - 支持向量机算法
  • C语言——母牛的故事
  • 数据结构 之 二叉树
  • 瑞熙贝通打造智慧校园实验室安全综合管理平台
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:UIExtensionComponent (系统接口))
  • 前端框架的发展史介绍框架特点
  • 【PyTorch】基础学习:在Pycharm等IDE中打印或查看Pytorch版本信息
  • Ubuntu虚拟机的IP总频繁变化,导致Xshell断开连接
  • 【JavaScript 漫游】【038】History 对象总结