leetcode之無重複字元的最長子串c 解法

2021-09-17 18:32:10 字數 986 閱讀 8881

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

示例 1:

輸入: "abcabcbb"

輸出: 3

解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。

假設我們有乙個函式 bool allunique(string substring) ,如果子字串中的字元都是唯一的,它會返回true,否則會返回false。 我們可以遍歷給定字串 s 的所有可能的子字串並呼叫函式 allunique。 如果事實證明返回值為true,那麼我們將會更新無重複字元子串的最大長度的答案。

為了列舉給定字串的所有子字串,我們需要列舉它們開始和結束的索引。假設開始和結束的索引分別為 ii 和 j。那麼我們有 0≤i3)。要驗證索引範圍在[i,j)內的字元是否是唯一的,需要檢查該範圍中的所有字元(遍歷一遍插入雜湊表中,雜湊表查詢需要o(1)的時間),因此將花費o(j-i)的時間。對於對於給定的 i,對於所有 j \in [i+1, n]j∈[i+1,n] 所耗費的時間總和為:

因此,執行所有步驟耗去的時間總和為:

空間複雜度:o(min(n, m)),所需的額外空間取決於雜湊表中儲存的元素數量以及字符集/字母 m 的大小,該錶最多需要儲存n個元素。

class solution

return ans;}};

LeetCode之無重複字元的最長子串

題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。思路 判斷每乙個區間是否有重複的字元,如果沒有就更新它。以下為 class solution return ans public bo...

LeetCode題庫練習之無重複字元的最長子串

參考自 題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。解題思路 運用滑動視窗的思想,從字串第乙個位置開始遍歷,當出現重複字元時,移除最左邊的字元。直至沒有重複的字元時停止。class solution lookup.insert s i maxstr max maxstr,...

leetcode題解之無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 解...