滑動視窗 字串的無重複最長子串

2022-06-21 01:36:07 字數 1968 閱讀 2009

給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。

思路:滑動視窗

例子:」abcbbcbb」

start和end初始為0.

初始化set,裡面存放滿足滑動視窗的字元。條件是:在start到end這個視窗中不能有重複的字元。

結果用r表示,初始化為0

end=0,a不在set中,將a加入到set,擴大視窗,end++,此時start=0,end=1,set=a。r=max(r, end-satrt)=1.

end=1,b不在set中,將b加入到set,擴大視窗,end++,此時start=0,end=2,set=a,b。r=max(r, end-start) = 2.

end=2,c不在set中,將c加入到set,擴大視窗,end++,此時start=0,end=3,set=a,b,c。r=max(r, end-start) = 3;

end=3,b在set中,將s.chartat(start)為a從set中移除,縮小視窗,start++,此時start=1,end=3,set=b,c。r=max(r, end-start) = 3;

end=3,b還在set中,將s.charat(start)為b從set中移除,縮小視窗,start++,此時start=2,end=3,set=c。r=max(r, end-satrt)=3

end=3,b不在set中,將b加入到set,擴大視窗,end++,此時start=2,end=4,set=c,b

end=4,b在set中,將s.chartat(start)為c從set中移除,縮小視窗,start++,此時start=3,end=4,set=b。r=max(r, end-satrt)=3

end=4,b在set中,將s.chatat(start)為b從set中移除,縮小視窗,start++,此時start=4,end=4,set=null。r=max(r, end-satrt)=3

end=4,b不在set中,將b加入到set,擴大視窗,end++,此時start=4,end=5,set=b。r=max(r, end-satrt)=3

end=5,c不在set中,將c加入到set,擴大視窗,end++,此時start=4,end=6,set=b,c。r=max(r, end-satrt)=3.

end=6,b在set中,將s.charat(start)為b從set中移除,縮小視窗,start++,此時start=5,end=6,set=c。r=max(r, end-satrt)=3

end=6,b不在set中,將b加入到set中,擴大視窗,end++,此時start=5,end=7,set=c,b。r=max(r, end-satrt)=3

end=7,b在set中,將s.charat(start)為c從set中移除,縮小視窗,start++,此時start=6,end=7,set=b。r=max(r, end-satrt)=3

end=7,b在set中,將s.charat(start)為b從set中移除,縮小視窗,start++,此時start=7,end=7.set=null。r=max(r, end-satrt)=3

end=7,b不在set中,將b加入到set中,擴大視窗,end++,此時start=7,end=8,set=b。r=max(r, end-satrt)=3

此時end=8 > 字串長度。退出。

最後結果為3。

無重複字元的最長子串(滑動視窗)

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。我們可以定義字元到索引的對映,而不是使用集合來判斷乙個字元是否存在。當我們找到重複的字元時,我們可以立即跳過該視窗。也就是說,如果 s...

無重複字元的最長子串(滑動視窗)

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。使用list的情況下可以儲存最長的字串什麼樣子,但是這道題不需要返回最長字串,所以list不好 class solution else retu...

滑動視窗 無重複字元的最長子串

1.引入 滑動視窗是陣列 字串問題中常用的抽象概念。視窗通常是在陣列 字串中由開始和結束索引定義的一系列元素的集合,即 i,j i,j 左閉,右開 而滑動視窗是可以將兩個邊界向某一方向 滑動 的視窗。例如,我們將 i,j i,j 向右滑動 11 個元素,則它將變為 i 1,j 1 i 1,j 1 左...