[Amazon] Longest Substring with At Most K Distinct Characters
来源:互联网 发布:mac os 10.9系统下载 编辑:程序博客网 时间:2024/05/16 06:43
Given a string s, find the length of the longest substring T that contains at most k distinct characters
Example
For example, Given s = "eceba"
, k = 3
,
T is "eceb"
which its length is 4
.
Challenge
O(n), n is the size of the string s.
思路:right指针遍历先统计到第一个使map.size()>k的字符,这时候,left指针从头开始遍历,直到可以使map.size()=k
最长的位置就是left到right,因此最长的个数就是right-left+1
public class Solution { /** * @param s : A string * @return : The length of the longest substring * that contains at most k distinct characters. */ public int lengthOfLongestSubstringKDistinct(String s, int k) { Map<Character,Integer> map=new HashMap<>(); int longest=0; int left=0; for(int right=0;right<s.length();right++){ char ch=s.charAt(right); if(!map.containsKey(ch)){ map.put(ch,1); }else{ map.put(ch,map.get(ch)+1); } while(map.size()>k){ char leftChar=s.charAt(left); map.put(leftChar,map.get(leftChar)-1); //遍历left,直到可以使map.size()减少1 if(map.get(leftChar)==0){ //也就是说right被统计过的字符 map.remove(leftChar); //哪个的个数先减小到0,就停止 } left++; } longest=Math.max(longest,right-left+1); } return longest; }}
阅读全文
0 0
- [Amazon] Longest Substring with At Most K Distinct Characters
- lintcode:Longest Substring with At Most K Distinct Characters
- Longest Substring with At Most K Distinct Characters
- LeetCode 340. Longest Substring with At Most K Distinct Characters
- leetcode Longest Substring with At Most K Distinct Characters
- Longest Substring with At Most K Distinct Characters
- Leetcode Longest Substring with At Most K Distinct Characters
- leetcode 340. Longest Substring with At Most K Distinct Characters
- [leetcode] 340. Longest Substring with At Most K Distinct Characters 解题报告
- LeetCode 340. Longest Substring with At Most K Distinct Characters(最长字串)
- Leetcode Everyday: 340. Longest Substring with At Most K Distinct Characters
- Leetcode 159 & 340 Longest Substring with At Most Two/K Distinct Characters
- [Leetcode] 340. Longest Substring with At Most K Distinct Characters 解题报告
- [Leetcode] Longest Substring with At Most Two Distinct Characters
- Leetcode Longest Substring with At Most Two Distinct Characters
- leetcode 159: Longest Substring with At Most Two Distinct Characters
- Longest Substring with At Most Two Distinct Characters
- [Leetcode]Longest Substring with At Most Two Distinct Characters
- 实现1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- Android Studio – Cannot resolve symbol ‘R’
- iOS当中的设计模式
- css3变形与动画总结(下)
- 23种设计模式(12)-享元模式
- [Amazon] Longest Substring with At Most K Distinct Characters
- 过滤器、监听器、拦截器的区别
- pid理解
- Laravel各种错误总结,不定期更新
- java并行编程及同步方法
- 类与结构体的区别
- Jedis使用指南
- PAT 乙级 1019. 数字黑洞 (20)
- 系统集成项目管理工程师中高级一次通过经验之谈