中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

leetcode如何求替換后的最長重復字符

發布時間:2021-12-16 09:41:08 來源:億速云 閱讀:133 作者:小新 欄目:大數據

這篇文章主要介紹了leetcode如何求替換后的最長重復字符,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

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

示例 1:

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

輸出:
4

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

示例 2:

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

輸出:
4

解釋:
將中間的一個'A'替換為'B',字符串變為 "AABBBBA"。
子串 "BBBB" 有最長重復字母, 答案為 4。

解題思路

1,滑動窗口類題目一般都需要左右兩個指針,重點放在理解和優化窗口移動的邏輯

2,注意本題是提換K個字符而不是替換K種

3,顯然最大長度=窗口內出現次數最多的字符的次數+K

4,每次移動右指針,更新最大出現次數

5,如果右指針到左指針長度>K+最大出現次數則,移動左指針

func characterReplacement(s string, k int) int {    win:=make(map[byte]int)    start:=0    max:=0    maxSame:=0
   for end:=0;end<len(s);end++{        win[s[end]]++        if win[s[end]]>maxSame{            maxSame=win[s[end]]        }        for end-start+1-maxSame>k{             win[s[start]]--            start++        }         fmt.Println("*",start,end,maxSame)        if end-start+1>max{            max=end-start+1        }    }    return max}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“leetcode如何求替換后的最長重復字符”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

特克斯县| 许昌市| 泸西县| 永丰县| 湖南省| 苍溪县| 天等县| 肥西县| 邳州市| 黄大仙区| 安塞县| 洛隆县| 梨树县| 岢岚县| 屏山县| 固安县| 宜宾县| 昌江| 宜丰县| 册亨县| 云林县| 中阳县| 南康市| 兴业县| 花莲市| 察隅县| 轮台县| 于田县| 玛沁县| 镇原县| 祁东县| 咸宁市| 梨树县| 临西县| 高台县| 汉源县| 新干县| 油尖旺区| 类乌齐县| 蒲城县| 宁海县|