340. Longest Substring with At Most K Distinct Characters
Input: s = "eceba", k = 2
Output: 3
Explanation: The substring is "ece" with length 3.Input: s = "aa", k = 1
Output: 2
Explanation: The substring is "aa" with length 2.class Solution {
public int lengthOfLongestSubstringKDistinct(String s, int k) {
HashMap<Character, Integer> map = new HashMap<>();
int res = 0;
int left = 0;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
map.put(c,map.getOrDefault(c,0)+1);
int count = map.size();
while(count > k){
char cur = s.charAt(left);
map.put(cur,map.get(cur)-1);
if(map.get(cur) == 0){
map.remove(cur);
count--;
}
left++;
}
res = Math.max(res,i-left+1);
}
return res;
}
}Last updated