340. Longest Substring with At Most K Distinct Characters
Given a string s and an integer k, return the length of the longest substring ofsthat contains at mostkdistinct characters.
Example 1:
Input: s = "eceba", k = 2
Output: 3
Explanation: The substring is "ece" with length 3.
Example 2:
Input: s = "aa", k = 1
Output: 2
Explanation: The substring is "aa" with length 2.
Constraints:
1 <= s.length <= 5 * 104
0 <= k <= 50
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;
}
}