文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T。

示例 1:
输入: s = "eceba", k = 2
输出: 3
解释: 则 T 为 "ece",所以长度为 3。示例 2:
输入: s = "aa", k = 1
输出: 2
解释: 则 T 为 "aa",所以长度为 2。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-with-at-most-k-distinct-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 哈希map对字符计数
  • 维持哈希map的size<=k,计数为0时,删除 key
class Solution {public:int lengthOfLongestSubstringKDistinct(string s, int k) {unordered_map<char,int> m;int maxlen = 0;for(int i = 0, j = 0; i < s.size(); ++i){if(m.size() <= k)m[s[i]]++;while(m.size()>k){if(--m[s[j]] == 0)m.erase(s[j]);j++;}maxlen = max(maxlen, i-j+1);}return maxlen;}
};

24 ms 8.3 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 340. 至多包含 K 个不同字符的最长子串(滑动窗口)相关推荐

  1. LeetCode 340. 至多包含 K 个不同字符的最长子串

    340. 至多包含 K 个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringKDistinct(String s, int k) ...

  2. LeetCode 340. 至多包含 K 个不同字符的最长子串 (滑动窗口)

    340. 至多包含 K 个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringKDistinct(String ss, int k ...

  3. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)

    159. 至多包含两个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {// 记录 ...

  4. leetcode——340.至多包含 K 个不同字符的最长子串

    题目--对不同字符个数进行k的限定 思路 利用双指针实现滑动窗口 滑动窗口对不同字母进行计数 移动右指针 当不同字符个数大于k 移动左指针 如何统计不同字符的个数?--哈希表的size 当出现次数为0 ...

  5. LeetCode算法日记:340.至多包含K个不同字符的最长子串

    340.至多包含K个不同字符的最长子串 日期:2022/7/30 题目描述:给定一个字符串 *s* ,找出 至多 包含 k 个不同字符的最长子串 *T*. 示例: 输入: s = "eceb ...

  6. 340. 至多包含K个不同字符的最长子串

    340. 至多包含 K 个不同字符的最长子串 难度:中等 给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T. 示例 1: 输入: s = "eceba", k ...

  7. 【LeetCode430】至多包含 K 个不同字符的最长子串

    340. 至多包含 K 个不同字符的最长子串 难度困难91收藏分享切换为英文接收动态反馈 给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T. 示例 1: 输入: s = " ...

  8. 滑动窗口—至多包含 K 个不同字符的最长子串(leetcode 340)

    题目描述 给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T. 示例 1: 输入: s = "eceba", k = 2 输出: 3 解释: 则 T 为 &quo ...

  9. Leetcode——至多包含K个不同字符的最长子串

    1. 至多包含两个不同字符的最长子串 (1)滑动窗口 动态地维护一个滑动窗口,如果检测到窗口内出现了超过两个不同的字符,则将窗口整体右移一格. 否则,将滑动窗口向右扩张一格. 最后返回滑动窗口的长度 ...

最新文章

  1. 服务器select与gevent
  2. processing solution item 在加载时一直出现
  3. sizeof 在C语言的作用,union 与sizeof的作用??
  4. php模拟input 的file上传文件
  5. Linux上的查找命令之locate查找
  6. 2017 ZSTU寒假排位赛 #5
  7. 嵌入式驱动工程师开发学习路线
  8. pc彩色版伏魔记开放Java源码
  9. 【成神之路】Redis相关面试题
  10. base64格式转换成普通png格式
  11. 三层锁机病毒的层层逆向剖析
  12. linux docker容器MySQL自动备份发送到邮箱
  13. Tengine + BabaSSL ,让国密更易用
  14. c++编程题2——ISBN计算识别码
  15. Input的常用属性
  16. 后台利用aop注解的方式防止重复提交
  17. 深度学习与计算机视觉-6章 Python-OpenCV
  18. iOS底层原理之内存管理
  19. vue项目结构目录介绍
  20. 解决could not read Username for ‘https://gitee.com‘: Device not configured

热门文章

  1. 解决bash: mysql: command not found 的方法【linux mysql命令 】
  2. java线程提高速度_如何在JAVA中减慢线程速度
  3. 05_JS流程控制语句
  4. VS toolTip1控件的使用1
  5. 深入浅出WPF之Binding的使用(一)
  6. 苹果应用上架,一些信息的勾选(2017年4月27日)
  7. 网站服务器中病毒该如何处理,网站被中了木马无法删除怎么办? 解决网站中病毒的办法...
  8. 分布式为什么使用Redis
  9. 前端小demo——全选和全不选
  10. 工厂方法模式及php实现