原題指路
至少有 k 個重複字元的最長子串
給你乙個字串s
和乙個整數k
,請你找出s
中的最長子串, 要求該子串中的每一字元出現次數都不少於k
。返回這一子串的長度。
這道題有別於一般的「滑動視窗」的題目,因為這道題視窗的維護條件需要人為新增一項,即視窗中的字元種類數。
雖然這看起來很複雜,但是由於這題的資料範圍限制在小寫字母集之內,所以可以直接列舉1-26種字母即可。
移動邊界時視窗需維護的變數有:
時間複雜度:o(n
⋅∣σ∣
+∣σ∣
2)o(n \cdot |\sigma| + |\sigma|^2)
o(n⋅∣σ
∣+∣σ
∣2)空間複雜度:o(∣
σ∣)o(|\sigma|)
o(∣σ∣)
∣ σ∣
=26|\sigma|=26
∣σ∣=26
是字母的個數。
class
solution
if(cnt[s[r]
-'a'
]== k)
//該字母出現次數k次
less--
;while
(tot > t)
l++;}
if(!less)
//視窗內字串滿足題設
ret =
max(ret, r - l +1)
;}}return ret;}}
;
395 至少有 K 個重複字元的最長子串
給你乙個字串 s 和乙個整數 k 請你找出 s 中的最長子串,要求該子串中的每一字元出現次數都不少於 k 返回這一子串的長度。示例 1 輸入 s aaabb k 3 輸出 3 解釋 最長子串為 aaa 其中 a 重複了 3 次。示例 2 輸入 s ababbc k 2 輸出 5 解釋 最長子串為 a...
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...