Leetcode Longest Substring with At Most K Distinct Characters

xiaoxiao2021-02-27  664

题意:找出最长的含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; } };

转载请注明原文地址: https://www.6miu.com/read-943.html

最新回复(0)