395 至少有 K 個重複字元的最長子串

2021-10-20 11:33:20 字數 1124 閱讀 9307

給你乙個字串 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。返回這一子串的長度。這道題有別於一般的 滑動視窗 的題目,因為這道題視窗的維護條件需要人為新增一項,即視窗中的字元種類數。雖然這看起來很複雜,但是由於這題的資料範...