【top】3. 無重復(fù)字符的最長子串

給定一個字符串 s ,請你找出其中不含有重復(fù)字符的 最長子串 的長度。

輸入: s = "abcabcbb"
輸出: 3 
解釋: 因為無重復(fù)字符的最長子串是 "abc",所以其長度為 3贫途。

輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復(fù)字符的最長子串是 "wke",所以其長度為 3待侵。
    請注意丢早,你的答案必須是 子串 的長度,"pwke" 是一個子序列诫给,不是子串香拉。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)中狂,非商業(yè)轉(zhuǎn)載請注明出處凫碌。

解釋下: 子串是一段連續(xù)的字符。 子序列不是胃榕,
重點來了:

這個題目只是需要找到最大長度盛险,而不是要找出對應(yīng)的字符串。

這個最大長度一直都在變化中勋又,是一直都在比較苦掘。

      max 是一直都在變化中的,我們只是保存最大的而已楔壤。
     
      使用2個指針鹤啡,和滑動窗口
      1:fast slow 指針,一開始都指向0蹲嚣。如果沒有重復(fù)的递瑰,那fast 指針就向后移動一位
      2:使用map來判斷當前元素是否已經(jīng)存在,
      3:如果當fast 遇到有重復(fù)的數(shù)據(jù)了隙畜,例如現(xiàn)在fast在下標10抖部。slow在下標5。當fast移動到下標11的時候议惰,發(fā)現(xiàn)11和5重復(fù)了(也就是fast和slow對應(yīng)的值一樣了)慎颗,那么就移動slow指針,
      將它移動到上一次出現(xiàn)位置的下一個位置,也就是移動slow 到 map.get(slow)+1 的位置上俯萎。 因為5-10是不重復(fù)的傲宜,5和11重復(fù),那么6-11 就是不重復(fù)的數(shù)據(jù)讯屈。
      max=fast-slow +1  蛋哭。因為這個題目是一直都在遍歷中县习,所以每次都要用max來比較涮母,
      所有max=Math.max(max,slow-fast+1);
      如果數(shù)據(jù)是 abca 當a再加入進去的時候,上一次指向a是0 這次應(yīng)該移動到1 有效的字符串應(yīng)該是bca  此時左指針應(yīng)該是 get(b)+1=1
     如果數(shù)據(jù)是 abba 當b再進去的時候躁愿,此時 上一次指向b的是1 這次應(yīng)該是移動到2叛本。字段變?yōu)榱薭  當a 再加上去的時候,發(fā)現(xiàn)又出現(xiàn)了重復(fù)彤钟,第一次a是0 現(xiàn)在a是3
     那么按照道理 slow 要從2變?yōu)?+1 到1 了来候,就變成了會退。相當于慢指針往后走了逸雹,實際上應(yīng)該不變营搅,最后字段是ba 才對。
     為了處理問題梆砸。
     我們每次獲取slow=map.get(重復(fù)字符)+1 都要與當前的slow 對比转质,
     例如 abba 第一次b 重復(fù)了 slow =map.get(b)+1=2  此時的max=2-1+1=2
     第二次a 重復(fù)了 按照邏輯就是slow=map.get(a)+1=0+1=1 但是上一次slow 已經(jīng)變成了2 如果回退,那字段就是 bba了帖世。本身就重復(fù)了休蟹,所以我們需要對slow進行比較,
    slow=Math.max(slow,map.get(重復(fù)字符)+1); 這次slow就還是2日矫,此時max=2-2+1=1 因為max是一直在變化赂弓,所以max=2 字段變?yōu)榱薭a
    解決了abba的問題后,每一次遍歷字符的時候哪轿,都應(yīng)該更新下 當前字符 以及他的下標盈魁。
    更新的重點在于下標,主要是因為只有通過下標定位窃诉,你才能知道上一次重復(fù)字段的下標是多少
    public int lengthOfLongestSubstring3(String s) {
        int max=0;
        int len=s.length();
        int left=0;
        Map<Character,Integer> map=new HashMap<>(len);
        for (int i = 0; i < len; i++) {
            char c = s.charAt(i);
            if(map.containsKey(c)){
                left=Math.max(left,map.get(c)+1);
            }
            map.put(c,i);
            max=Math.max(max,i-left+1);
        }
        return max;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杨耙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子褐奴,更是在濱河造成了極大的恐慌按脚,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敦冬,死亡現(xiàn)場離奇詭異辅搬,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門堪遂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來介蛉,“玉大人,你說我怎么就攤上這事溶褪”揖桑” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵猿妈,是天一觀的道長吹菱。 經(jīng)常有香客問我,道長彭则,這世上最難降的妖魔是什么鳍刷? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮俯抖,結(jié)果婚禮上输瓜,老公的妹妹穿的比我還像新娘。我一直安慰自己芬萍,他們只是感情好尤揣,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柬祠,像睡著了一般北戏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓶盛,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天最欠,我揣著相機與錄音,去河邊找鬼惩猫。 笑死芝硬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的轧房。 我是一名探鬼主播拌阴,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奶镶!你這毒婦竟也來了迟赃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤厂镇,失蹤者是張志新(化名)和其女友劉穎纤壁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捺信,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡酌媒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秒咨。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡喇辽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雨席,到底是詐尸還是另有隱情菩咨,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布陡厘,位于F島的核電站抽米,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏雏亚。R本人自食惡果不足惜缨硝,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罢低。 院中可真熱鬧,春花似錦胖笛、人聲如沸网持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功舀。三九已至,卻和暖如春身弊,著一層夾襖步出監(jiān)牢的瞬間辟汰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工阱佛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帖汞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓凑术,卻偏偏與公主長得像翩蘸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淮逊,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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