思路一:由於只有26個候選字母,所以答案一定會在它們之間產生,那麼我記錄每個字母出現的所有位置,然後列舉26個字母,對於每次列舉而言,其實就是乙個雙指標問題。這樣時間複雜度還是o(s
trle
n)o(strlen)
o(strl
en),但是空間複雜度略高。
思路二:也是題解的方法,大大降低了空間複雜度,不過有點難以理解。大概就是說記錄區間[l,class
solution
}return
min(ans,
(int
)s.size()
);}}
;
r][l,r]
[l,r
]內出現次數最多的字元,不妨設出現了x
xx次,顯然只要r−l
+1−x
<=k
r-l+1-x<=k
r−l+1−
x<=k
就是滿足題意的區間,此時可以繼續移動r
rr,否則就需要移動lll。
class
solution
return r-l;}}
;
力扣 替換後的最長重複字元
如果maxchar 可操作的次數k大於區間的長度,說明還有操作的空間 繼續 right if maxchar k end start 反之就是雖然在left和right區間內找到最多的字元,但是其小於區間的長度 需要右移left else 每次都要更新結果 if maxchar k res res ...
424 替換後的最長重複字元
給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和 k 不會超過 104。示例 1 輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。示例 2 輸...
424 替換後的最長重複字元
給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和 k 不會超過 104。示例 1 輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。示例 2 輸...