注意:字串長度 和 k 不會超過 104。
示例 1:
輸入:s = 「abab」, k = 2
輸出:4
解釋:用兩個』a』替換為兩個』b』,反之亦然。
示例 2:
輸入:s = 「aababba」, k = 1
輸出:4
解釋:將中間的乙個』a』替換為』b』,字串變為 「aabbbba」。
子串 「bbbb」 有最長重複字母, 答案為 4。
想法:首先看到這道題,需要注意到乙個限制條件就是k,只能替換到k個不同的字元,以此來找到最長的字串。這就能自然而然的想到使用乙個滑動的視窗去搜尋這個最長的相同的字串。
1.設定左右的雙指標來控制滑動視窗,使用乙個vector容器來儲存滑動視窗內的每個字元的數量,需要保證的是在這個滑動視窗中的字元除了出現最多的那個字元外的,其他的個數不能超過k個。2.每次控制右指標移動,如果不滿足1的條件,則左指標向左移動。相應的vector容器中對應字元的數量也應減1.
個人感覺最重要的就是在左指標的移動上,若不滿足替換k個不同字元,則左指標移動,左指標的移動就是為了儲存原來的最長長度。
leetcode刷題之424 替換後的最長重複字元
給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和 k 不會超過 104。輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。這個思路和求字串中最長...
LeetCode刷題筆記 890 查詢和替換模式
你有乙個單詞列表 words 和乙個模式 pattern,你想知道 words 中的哪些單詞與模式匹配。如果存在字母的排列 p 使得將模式中的每個字母 x 替換為 p x 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,沒有兩...
LeetCode 424 替換後的最長重複字元
這道題直接照搬了官方題解,接下來認真刷兩道滑動視窗吧。給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換k次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和k不會超過104。示例1 輸入 s abab k 2 輸出 4 解釋 用兩個 ...