424 替換後的最長重複字元

2022-05-13 06:51:07 字數 1553 閱讀 5040

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

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

示例 1:

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

輸出:4

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

示例 2:

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

輸出:4

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

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

將任意位置上的字元替換成另外的字元,總共可最多替換 k 次的符合條件的子字串

<=>

len(substr)-max(counter(substr))<=k

<=>

r-l+1-maxcnt<=k

py

tle 36/37

class

solution:

from collections import

counter

def characterreplacement(self, s: str, k: int) ->int:

l=r=0

res=0

while rif len(s)-lbreak

if r-l+1-max(counter(s[l:r+1]).values())>k:

l+=1res=max(res,r-l+1)

r+=1

return res

optimization,use dictionary===>ac:

class

solution:

from collections import

counter

import

string

def characterreplacement(self, s: str, k: int) ->int:

l=r=0

res=0

maxchar=0

cnt={}

for char in

ascii_uppercase:

cnt[char]=0

while rif len(s)-lbreak

cnt[s[r]]+=1maxchar=max(cnt.values())

if r-l+1-maxchar>k:

cnt[s[l]]-=1l+=1res=max(res,r-l+1)

r+=1

return res

c++

class

solution

res=max(res,r-l+1

); r++;

}return

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

424 替換後的最長重複字元

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