Leetcode-3 無(wú)重復(fù)字符的最長(zhǎng)子串 Python

1. 題目

給定一個(gè)字符串,請(qǐng)你找出其中不含有重復(fù)字符的 最長(zhǎng)子串 的長(zhǎng)度腕够。

示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "abc",所以其長(zhǎng)度為 3维咸。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "b"簇捍,所以其長(zhǎng)度為 1乙帮。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因?yàn)闊o(wú)重復(fù)字符的最長(zhǎng)子串是 "wke"杜漠,所以其長(zhǎng)度為 3。
請(qǐng)注意察净,你的答案必須是 子串 的長(zhǎng)度驾茴,"pwke" 是一個(gè)子序列,不是子串氢卡。

2. 解題思路

2.1 樸素解法锈至,暴力搜索

為了枚舉給定字符串的所有子字符串,我們需要枚舉它們開(kāi)始和結(jié)束的索引译秦。假設(shè)開(kāi)始和結(jié)束的索引分別為 ij峡捡。那么我們有 0 \leq i \lt j \leq n ,0≤i<j≤n(這里的結(jié)束索引 j 是按慣例排除的)。因此筑悴,使用 i 從0到n - 1,n?1 以及 j 從 i+1 到 n 這兩個(gè)嵌套的循環(huán)们拙,我們可以枚舉出 s 的所有子字符串。

要檢查一個(gè)字符串是否有重復(fù)字符阁吝,我們可以使用集合砚婆。我們遍歷字符串中的所有字符,并將它們逐個(gè)放入 set 中突勇。在放置一個(gè)字符之前装盯,我們檢查該集合是否已經(jīng)包含它。如果包含甲馋,我們會(huì)返回 false埂奈。循環(huán)結(jié)束后,我們返回 true定躏。

2.2 滑動(dòng)窗口

利用python 的字典账磺,或者java中的Map<Character, Integer> map
存儲(chǔ)每個(gè)字符出現(xiàn)位置的索引。
使用變量end來(lái)記錄上次該字符出現(xiàn)的位置長(zhǎng)度痊远,刪掉從該字符前一次出現(xiàn)绑谣,及其以前的重復(fù)出現(xiàn),也可以理解成不重復(fù)字符串的開(kāi)始位置拗引;
使用變量m來(lái)記錄不重復(fù)字符出現(xiàn)的最大長(zhǎng)度;
each是遍歷字符串的當(dāng)前index

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if len(s) == 0 : return 0
        end = 0
        dic = {}
        m = 0
        for each in range(len(s)):
            if s[each] in dic :
                end = max(end,dic[s[each]]+1)
            dic[s[each]] = each
            m = max(m,each-end+1)
            
        return m

第二種理解思路
求無(wú)重復(fù)字符的最長(zhǎng)子串的長(zhǎng)度幌衣,從頭到尾遍歷字符串時(shí)(索引index)矾削,考慮到無(wú)重復(fù)字符壤玫,我們先把字符逐個(gè)放到容器set中,并更新最長(zhǎng)子串的長(zhǎng)度哼凯,如果遇到了重復(fù)字符欲间,即當(dāng)前遍歷的字符在set中,則要從set中刪除重復(fù)字符断部,包括這個(gè)重復(fù)字符前面的所有字符猎贴,也就是從當(dāng)前子串的最左邊(left)開(kāi)始刪除,直到刪除重復(fù)字符

3. 總結(jié)/分類(lèi)

字符串蝴光,滑動(dòng)窗口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末她渴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔑祟,更是在濱河造成了極大的恐慌趁耗,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疆虚,死亡現(xiàn)場(chǎng)離奇詭異苛败,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)径簿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)罢屈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人篇亭,你說(shuō)我怎么就攤上這事缠捌。” “怎么了暗赶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵鄙币,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蹂随,道長(zhǎng)十嘿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任岳锁,我火速辦了婚禮绩衷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘激率。我一直安慰自己咳燕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布乒躺。 她就那樣靜靜地躺著招盲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘉冒。 梳的紋絲不亂的頭發(fā)上曹货,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天咆繁,我揣著相機(jī)與錄音,去河邊找鬼顶籽。 笑死玩般,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的礼饱。 我是一名探鬼主播坏为,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镊绪!你這毒婦竟也來(lái)了匀伏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镰吆,失蹤者是張志新(化名)和其女友劉穎帘撰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體万皿,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摧找,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牢硅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹬耘。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖减余,靈堂內(nèi)的尸體忽然破棺而出综苔,到底是詐尸還是另有隱情,我是刑警寧澤位岔,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布如筛,位于F島的核電站,受9級(jí)特大地震影響抒抬,放射性物質(zhì)發(fā)生泄漏杨刨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一擦剑、第九天 我趴在偏房一處隱蔽的房頂上張望妖胀。 院中可真熱鬧,春花似錦惠勒、人聲如沸赚抡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涂臣。三九已至,卻和暖如春售担,著一層夾襖步出監(jiān)牢的瞬間赁遗,已是汗流浹背闯估。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吼和,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓骑素,卻偏偏與公主長(zhǎng)得像炫乓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子献丑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容