Leetcode Longest Substring with At Most K Distinct Characters

题意:找出最长的含k个不同字符的子串的长度。

思路:windows slide

class Solution {
public:
    int lengthOfLongestSubstringKDistinct(string s, int k) {
        if(k < 1) return 0;
        
        vector<int> alpha(128, 0);
        int b = 0, e = 0;
        int lengthMax = 0;
        while(true) { 
            if(check(alpha, k)) { //cout << e << "  " << b << endl;
                lengthMax = max(lengthMax, e - b);
                if(e < s.length()) alpha[s[e]] ++;
                else break;
                e ++;
            }
            else {
                alpha[s[b]] --;
                b ++;
            }
        }
        
        
        return lengthMax;
    }
    
private:
    bool check(vector<int> alpha, int k) {
        int count = 0;
        for(int i = 0; i < alpha.size(); ++ i) {
            if(alpha[i] != 0) count ++;
        }
        return count <= k;
    }
};

猜你喜欢

转载自blog.csdn.net/markpen/article/details/71157306