LeetCode - #3 最長未重復子字符串

前言

我們社區(qū)從本期開始會將顧毅(Netflix 增長黑客,《iOS 面試之道》作者垢袱,ACE 職業(yè)健身教練。微博:@故胤道長))的 Swift 算法題題解整理為文字版以方便大家學習與閱讀。

不積跬步扫责,無以至千里;不積小流逃呼,無以成江海鳖孤,Swift社區(qū) 伴你前行者娱。

1. 描述

給定一個字符串 s, 找出最長未重復的子字符串的長度.

2. 示例

示例 1

輸入: s = "abcabcbb"
輸出: 3
解釋: 最長為重復的子字符串答案是 "abc", 長度為 3.

示例 2

輸入: s = "bbbbb"
輸出: 1
解釋: 最長為重復的子字符串答案是 "b", 長度為 1.

示例 3

輸入: s = "pwwkew"
輸出: 3
解釋: 最長為重復的子字符串答案是 "wke", 長度為 3.
注意答案必須是自字符串,“pwke” 是一個子列,而不是一個自字符串.

示例 4

輸入: s = ""
輸出: 0

3. 答案

class LongestSubstringWithoutRepeatingCharacters {
    func lengthOfLongestSubstring(_ s: String) -> Int {
        var maxLen = 0, startIdx = 0, charToPos = [Character: Int]()
        let sChars = Array(s)
        
        for (i, char) in sChars.enumerated() {
            if let pos = charToPos[char] {
                startIdx = max(startIdx, pos)
            }
            
            // update to next valid position
            charToPos[char] = i + 1
            maxLen = max(maxLen, i - startIdx + 1)
        }
        
        return maxLen
    }
}

  • 主要思想:使用字典存儲非重復子字符串的下一個可能有效字符的位置,然后迭代字符串更新 maxLen、dictionary 和遇到重復時的 startIdx .
  • 時間復雜度: O(n)
  • 空間復雜度: O(n)

點擊前往 LeetCode 練習

該算法題解的 github 倉庫地址是:https://github.com/soapyigu/LeetCode-Swift

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末苏揣,一起剝皮案震驚了整個濱河市黄鳍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌平匈,老刑警劉巖框沟,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異增炭,居然都是意外死亡忍燥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門隙姿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梅垄,“玉大人,你說我怎么就攤上這事输玷“ゼ祝” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵饲嗽,是天一觀的道長炭玫。 經常有香客問我,道長貌虾,這世上最難降的妖魔是什么吞加? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮尽狠,結果婚禮上衔憨,老公的妹妹穿的比我還像新娘。我一直安慰自己袄膏,他們只是感情好践图,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沉馆,像睡著了一般码党。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斥黑,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天揖盘,我揣著相機與錄音,去河邊找鬼锌奴。 笑死兽狭,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播箕慧,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼服球,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颠焦?” 一聲冷哼從身側響起斩熊,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒸健,沒想到半個月后座享,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡似忧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年渣叛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯捌。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡淳衙,死狀恐怖,靈堂內的尸體忽然破棺而出饺著,到底是詐尸還是另有隱情箫攀,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布幼衰,位于F島的核電站靴跛,受9級特大地震影響,放射性物質發(fā)生泄漏渡嚣。R本人自食惡果不足惜梢睛,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望识椰。 院中可真熱鬧绝葡,春花似錦、人聲如沸腹鹉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功咒。三九已至愉阎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間航瞭,已是汗流浹背诫硕。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刊侯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓锉走,卻偏偏與公主長得像滨彻,于是被迫代替她去往敵國和親藕届。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容