3. Longest Substring Without Repeating Characters

題目地址

題目要求:

Given a string, find the length of the longest substring without repeating characters.

主要思路:

除了brute force之外吁脱,可以使用sliding window的思路來(lái)解決遍蟋,即在碰到與前面的substring相同的character的時(shí)候?qū)ubstring向右滑動(dòng)再重新尋找柿祈。

代碼:

def lengthOfLongestSubstring(self, s):
    """
    :type s: str
    :rtype: int
    """
    start = maxLength = 0
    usedChar = {}
    
    for i in range(len(s)):
        if s[i] in usedChar and start <= usedChar[s[i]]:
            start = usedChar[s[i]] + 1
        else:
            maxLength = max(maxLength, i - start + 1)
        
        usedChar[s[i]] = i
        
    return maxLength

代碼中的start記錄起始位置,當(dāng)遇到substring中存在相同的character的情況計(jì)算一次此時(shí)的長(zhǎng)度翘魄,并更新最大長(zhǎng)度。這里注意usedChar是會(huì)不斷更新到最大下標(biāo)的,因?yàn)榍懊嫜h(huán)的原因禁添,舊的usedChar已經(jīng)被sliding window滑過(guò)了,所以必須更新useChar桨踪。

2019重刷老翘,本來(lái)想用,遞歸锻离,通過(guò)分治法求解铺峭,但這其實(shí)相當(dāng)于返回了最長(zhǎng)的不重復(fù)可間斷子列,和實(shí)際要求差異較大汽纠。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if s is None or len(s)==0:
            return 0
        
        if len(s)==1:
            return 1
        for i in range(1,len(s)):
            if s[i]==s[0]:
                return max(self.lengthOfLongestSubstring(s[i:len(s)]),self.lengthOfLongestSubstring(s[0:i])) 
第三種思路:

使用hashmap和滑動(dòng)時(shí)間窗口來(lái)實(shí)現(xiàn)卫键,這種方法在于hashmap的巧妙運(yùn)用以及滑動(dòng)時(shí)間窗口的結(jié)合。
在python中用dict即字典來(lái)代替其他語(yǔ)言中的哈希表虱朵,字典其實(shí)就是一種特定的哈希表莉炉。
代碼的實(shí)現(xiàn)主要在于定義字典,左邊界以及右邊界碴犬。dic={}絮宁,字典里面每個(gè)值都是相應(yīng)的char的位置,l,r分別是當(dāng)前窗口的左邊界以及右邊界服协。當(dāng)遍歷字符串绍昂,出現(xiàn)與字典中現(xiàn)有的重復(fù)的,則更新左邊界為dict[s[r]]+1。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        dic = {}
        l,res = 0,0
        for r in range(len(s)):
            if s[r] in dic:
                l = max(dic[s[r]]+1,l)
            dic[s[r]] = r
            res = max(res,r-l+1)
        return res
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窘游,一起剝皮案震驚了整個(gè)濱河市唠椭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忍饰,老刑警劉巖贪嫂,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異喘批,居然都是意外死亡撩荣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)饶深,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)餐曹,“玉大人,你說(shuō)我怎么就攤上這事敌厘√ê铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵俱两,是天一觀的道長(zhǎng)饱狂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宪彩,這世上最難降的妖魔是什么休讳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮尿孔,結(jié)果婚禮上俊柔,老公的妹妹穿的比我還像新娘。我一直安慰自己活合,他們只是感情好雏婶,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著白指,像睡著了一般留晚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上告嘲,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天错维,我揣著相機(jī)與錄音,去河邊找鬼橄唬。 笑死赋焕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轧坎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泽示,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缸血!你這毒婦竟也來(lái)了蜜氨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捎泻,失蹤者是張志新(化名)和其女友劉穎飒炎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體笆豁,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郎汪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闯狱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞赢。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哄孤,靈堂內(nèi)的尸體忽然破棺而出照筑,到底是詐尸還是另有隱情,我是刑警寧澤瘦陈,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布凝危,位于F島的核電站,受9級(jí)特大地震影響晨逝,放射性物質(zhì)發(fā)生泄漏蛾默。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一捉貌、第九天 我趴在偏房一處隱蔽的房頂上張望支鸡。 院中可真熱鬧,春花似錦昏翰、人聲如沸苍匆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浸踩。三九已至,卻和暖如春统求,著一層夾襖步出監(jiān)牢的瞬間检碗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工码邻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留折剃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓像屋,卻偏偏與公主長(zhǎng)得像怕犁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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