340. Longest Substring with At Most K Distinct Characters

Given a string, find the length of the longest substring T that contains at most  k  distinct characters.

Example 1:

``````Input: s = "eceba", k = 2
Output: 3
Explanation: T is "ece" which its length is 3.
``````

Example 2:

``````Input: s = "aa", k = 1
Output: 2
Explanation: T is "aa" which its length is 2.
``````

``````class Solution {
public:
int lengthOfLongestSubstringKDistinct(string s, int k) {
int res = 0, left = 0;
unordered_map<char, int> m;
for (int i = 0; i < s.size(); ++i) {
++m[s[i]];
while (m.size() > k) {
if (--m[s[left]] == 0) m.erase(s[left]);
++left;
}
res = max(res, i - left + 1);
}
return res;
}
};
``````

``````class Solution {
public:
int lengthOfLongestSubstringKDistinct(string s, int k) {
int res = 0, left = 0;
unordered_map<char, int> m;
for (int i = 0; i < s.size(); ++i) {
m[s[i]] = i;
while (m.size() > k) {
if (m[s[left]] == left) m.erase(s[left]);
++left;
}
res = max(res, i - left + 1);
}
return res;
}
};
``````

Longest Substring with At Most Two Distinct Characters

https://leetcode.com/problems/longest-substring-with-at-most-k-distinct-characters/

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation