leetcode刷題之424 替換後的最長重複字元

2021-10-24 17:46:41 字數 718 閱讀 2474

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

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

輸入:

s = 「abab」, k = 2

輸出:4

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

這個思路和求字串中最長連續子串的思路差不多,只是關鍵的一些判斷條件有改變。

當出現較長的連續序列的時候,視窗就應該進行擴充套件,如果當前還沒有超過視窗長度的序列就進行平移。

如果要記錄視窗長度最大值,按我自己的思路可能不會對拿變數去統計一些值的最大值,但是大神不一樣,使用乙個map容器就可以統計win裡面的重複字元。

判斷window是否需要擴充套件的依據:只需要判斷當前加上新元素之後當前元素在win中的個數是否超過win本身長度。也就是說只有當前win中全是乙個字元這時候視窗右側的字元還是這個字元的情況下,視窗的最大值就增加。

class

solution

right ++;}

delete

m;//返回的值是s.size() - left

return s.

size()

- left;

]

LeetCode 刷題 424 替換後最長的字串

注意 字串長度 和 k 不會超過 104。示例 1 輸入 s abab k 2 輸出 4 解釋 用兩個 a 替換為兩個 b 反之亦然。示例 2 輸入 s aababba k 1 輸出 4 解釋 將中間的乙個 a 替換為 b 字串變為 aabbbba 子串 bbbb 有最長重複字母,答案為 4。想法 ...

Leetcode刷題之括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...

leetcode刷題之堆

今天終於開啟的第二個專題的刷題之旅堆,不過第乙個專題棧還有乙個小問題沒解決就是利用遞減棧去解決接雨水的問題,雖然那道題我用動態規劃的問題解決出來了,我記得看到過一道面試題,問棧和堆有什麼區別。通過搜尋網上的資料總結如下。棧 stack 由系統分配記憶體,速度較快,但是自己無法掌握。堆 一般用兩種方法...