力扣 424 替換後的最長重複字元 雙指標

2021-10-18 19:38:02 字數 703 閱讀 1518

思路一:由於只有26個候選字母,所以答案一定會在它們之間產生,那麼我記錄每個字母出現的所有位置,然後列舉26個字母,對於每次列舉而言,其實就是乙個雙指標問題。這樣時間複雜度還是o(s

trle

n)o(strlen)

o(strl

en),但是空間複雜度略高。

class

solution

}return

min(ans,

(int

)s.size()

);}}

;

思路二:也是題解的方法,大大降低了空間複雜度,不過有點難以理解。大概就是說記錄區間[l,

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 輸...