/**
* Runtime: 19 ms, faster than 31.40%
* Memory Usage: 41.2 MB, less than 30.53%
*/
class Solution {
public int lengthOfLongestSubstringKDistinct(String s, int k) {
HashMap<Character, Integer> map = new HashMap<>();
int left = 0, right;
char[] arr = s.toCharArray();
for (right = 0; right < arr.length; right++) {
char curr = arr[right];
map.put(curr, map.getOrDefault(curr, 0) + 1);
if (map.size() > k) {
char leftMost = arr[left];
int cnt = map.get(leftMost);
if (cnt == 1) {
map.remove(leftMost);
} else {
map.put(leftMost, cnt - 1);
}
left++;
}
}
return right - left;
}
}
340. Longest Substring with At Most K Distinct Characters [Medium]
最新推荐文章于 2024-07-22 16:27:42 发布