340 Longest Substring with At Most K Distinct Characters
Description
Given a string, find the length of the longest substring T that contains at mostkdistinct characters.
For example, Given s =“eceba”
and k = 2,
T is "ece" which its length is 3.
Note
Corner Case:
* what if k = 0?
Code
class Solution {
public:
int lengthOfLongestSubstringKDistinct(string s, int k) {
int chrCnt[256] = {0};
unordered_set<char> tracker;
int curIndex = 0, nextStart = 0;
int length = 0, curLength = 0;
if(k == 0) {
return length;
}
while(curIndex < s.size()){
if(tracker.find(s[curIndex]) == tracker.end()) {
if(tracker.size() == k) {
while(tracker.size() == k) {
--chrCnt[s[nextStart]];
if(chrCnt[s[nextStart]] == 0) {
tracker.erase(s[nextStart]);
}
++nextStart;
}
}
tracker.insert(s[curIndex]);
}
++chrCnt[s[curIndex]];
++curIndex;
length = (length < curIndex - nextStart) ? curIndex - nextStart : length;
}
return length;
}
};