Leetcode 3 無重複最長子串(c 實現)

2021-10-09 21:50:18 字數 1157 閱讀 5582

題目:

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

示例 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 是 子串行 而不是子串。採用最直接的...