給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。
注意:字串長度 和 k 不會超過 104。
輸入:s = 「abab」, k = 2輸出:4
解釋:用兩個』a』替換為兩個』b』,反之亦然。
輸入:s = 「aababba」, k = 1突然發現涉及到查詢子串,不可避免的要遍歷所有情況,但可以用乙個容器記錄狀態,避免重複的比較。涉及到比較,並且出現大小關係的情況下就想辦法跳過一些情況提高效率。輸出:4
解釋:將中間的乙個』a』替換為』b』,字串變為 「aabbbba」。
子串 「bbbb」 有最長重複字母, 答案為 4
子串允許出現的最長長度 = 出現次數最多的字元的出現次數 + k
class
solution
:def
characterreplacement
(self, s:
str, k:
int)
->
int:
# 子串頭尾
head, tail =0,
0# 當前子串長度
length =
0# 最長子串長度
max_length =
0# 字元:字元數量
stat =
# 當前子串出現字元中最多的字元數量
max_num =
0for tail in s:
num = stat.get(tail,0)
+1stat[tail]
= num
length +=
1if num > max_num:
max_num = num
if length - max_num > k:
stat[s[head]]-=
1 head +=
1 length -=
1if length > max_length:
max_length = length
return max_length
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 輸...