給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
假設我們有乙個函式 bool allunique(string substring) ,如果子字串中的字元都是唯一的,它會返回true,否則會返回false。 我們可以遍歷給定字串 s 的所有可能的子字串並呼叫函式 allunique。 如果事實證明返回值為true,那麼我們將會更新無重複字元子串的最大長度的答案。示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
為了列舉給定字串的所有子字串,我們需要列舉它們開始和結束的索引。假設開始和結束的索引分別為 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 解...