題目:
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
程式設計如下:
採用滑動視窗思想,建立乙個list(視窗),將字串乙個乙個從尾部壓入,每壓入乙個元素都要檢查視窗內是否有重複的元素,如果沒有則繼續壓入新元素;如果有,則從鍊錶頭部彈出乙個元素,保持視窗大小不變。
顯而易見,當視窗裡有重複元素時,視窗大小保持不變;視窗沒有重複元素時,不斷壓入新元素。因此視窗大小就是最長子串的長度。
#include
#include
#include
#include
using
namespace std;
class
lngst_substring
;bool lngst_substring::
input()
bool lngst_substring::
sliding_window()
}if(flag==1)
}if(temp
size()
)//視窗每次增長都會列印一次資料,不增長則意味著裡面有重複子串,則不列印
temp=sliding_str.
size()
; cout<
return
true;}
bool lngst_substring::
output()
intmain()
除錯結果如下:
LeetCode 3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。clas...
LeetCode 3 無重複字元的最長子串
題目 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。不...
LeetCode3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。採用最直接的...