給你乙個字串 s 和乙個整數 k ,請你找出 s 中的最長子串, 要求該子串中的每一字元出現次數都不少於 k 。返回這一子串的長度。
示例 1:
輸入:s = 「aaabb」, k = 3
輸出:3
解釋:最長子串為 「aaa」 ,其中 『a』 重複了 3 次。
示例 2:
輸入:s = 「ababbc」, k = 2
輸出:5
解釋:最長子串為 「ababb」 ,其中 『a』 重複了 2 次, 『b』 重複了 3 次。
分治。給定乙個子串的範圍,記錄該子串中所有字元出現的次數。
然後找出出現次數沒有達到k的字元,記錄乙個即可,記為sp。如果找不到,說明該子串滿足定義,返回長度。
從左往右遍歷當前子串不包含sp的小子串,遞迴。記錄所有這些小子串的最大長度,最後返回。
public
class
solution
intsearch
(string s,
int left,
int right,
int k)
char sp =
'a';
int *** =-1
;//找出現過,但沒有達到k的 字元,作為分割
for(
int i =
0;i <
26;i++)}
//如果沒找到,說明該子串滿足條件
if(*** ==-1
)int i = left;
int nowlen =0;
while
(i <= right)
if(i > right)
break
;//找到了起點
int st = i;
while
(i <= right && s.
charat
(i)!= sp)
int lt =
search
(s,st,i-
1,k)
; nowlen = math.
max(nowlen,lt);}
return nowlen;
}}
395 至少有K個重複字元的最長子串
殘疾人 訓練 題目 給你乙個字串s和乙個整數k,請你找出s中的最長子串,要求該子串中的每一字元出現次數都不少於k。返回這一子串的長度。最開始的時候一頭霧水 因為我是殘疾人 求子串的問題,在我看來,最難的地方就是時間複雜度 因為隨著字串長度的增加,全部字串的數量是呈指數級別上公升的,因此所有基於列舉所...
395 至少有 K 個重複字元的最長子串 分治
給你乙個字串 s 和乙個整數 k 請你找出 s 中的最長子串,要求該子串中的每一字元出現次數都不少於 k 返回這一子串的長度。示例 1 輸入 s aaabb k 3 輸出 3 解釋 最長子串為 aaa 其中 a 重複了 3 次。class solution if n 0 n k vector has...
至少有 K 個重複字元的最長子串
原題指路 至少有 k 個重複字元的最長子串 給你乙個字串s和乙個整數k,請你找出s中的最長子串,要求該子串中的每一字元出現次數都不少於k。返回這一子串的長度。這道題有別於一般的 滑動視窗 的題目,因為這道題視窗的維護條件需要人為新增一項,即視窗中的字元種類數。雖然這看起來很複雜,但是由於這題的資料範...