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;
    }
};

results matching ""

    No results matching ""