Leetcode:395至少有K個重複字元的最長子串(C++)
阿新 • • 發佈:2018-11-11
找到給定字串(由小寫字元組成)中的最長子串 T , 要求 T 中的每一字元出現次數都不少於 k 。輸出 T 的長度。
示例 1:輸入:
s = "aaabb", k = 3
輸出:
3
最長子串為 "aaa" ,其中 'a' 重複了 3 次。
示例 2:輸入:
s = "ababbc", k = 2
輸出:
5
最長子串為 "ababb" ,其中 'a' 重複了 2 次, 'b' 重複了 3 次。
class Solution { public: int longestSubstring(string s, int k) { if(k==1||k==0) { return s.size(); } int size=s.size(); int num=0; for(int i=0;i<size;i++) { int *arr=new int[26]; arr[s[i]-'a']++; for(int j=i+1;j<size;j++) { arr[s[j]-'a']++; if(longstr(arr,k)==true&&j-i+1>num) { num=j-i+1; } } } return num; } bool longstr(int *arr,int k) { for(int i=0;i<arr.size();i++) { if(arr[i]>0&&arr[i]<k) { return false; } } return true; } };