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

2022-07-25 20:27:07 字數 803 閱讀 4108

424. 替換後的最長重複字元

給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。

注意:字串長度 和 k 不會超過 104。

示例 1:

輸入:s = "abab", k = 2

輸出:4

解釋:用兩個'a'替換為兩個'b',反之亦然。

示例 2:

輸入:s = "aababba", k = 1

輸出:4

解釋:將中間的乙個'a'替換為'b',字串變為 "aabbbba"。

子串 "bbbb" 有最長重複字母, 答案為 4。

總體思路是維護乙個滑動視窗,同時維護視窗內的字元的最大頻率數,如果這個最大頻率的字元替換k個都不能將整個視窗都替換成重複串,就應該將視窗左邊界右移。

public class solution 

char chararray = s.tochararray();

int left = 0;

int right = 0;

int res = 0;

int maxcount = 0;

int freq = new int[26];

// [left, right) 內最多替換 k 個字元可以得到只有一種字元的子串

while (right < len)

res = math.max(res, right - left+1);

right++;

}return res;

}}

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

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

替換後的最長重複字元

給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換k次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和k不會超過104。輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。輸入 s aababba k 1...

424 替換後的最長重複字元

給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和 k 不會超過 104。示例 1 輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。示例 2 輸...