給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: 「abcabcbb」
輸出: 3
解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。
示例 2:
輸入: 「bbbbb」
輸出: 1
解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。
示例 3:
輸入: 「pwwkew」
輸出: 3
解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。
思路:使用乙個列表儲存無重複子字串,如果新字元在子串中,那麼已經統計了當前子串的最大值,需要往後進行訪問,尋找其它子串,為了防止重複,則把最開頭到子串中字元重複位置的都刪除,並加入新字元,保證子串中沒有重複的字元。
將字串從前到後按字元進行遍歷,並建立無重複子字串
找到子串中跟新字元相同字元的位置,並刪除從前面到該位置所有字元,重新開始尋找新的子串
用c記錄每個子串長度,用mx記錄最大的長度
public
class
solution
r.add(item)
; c++
; mx = c>mx?c:mx;
}return mx;
}}
思路:使用乙個字串儲存每個字元的最大位置,如果重複出現,使用當前位置減去上次出現的位置,即為當前子串的最大長度。
記錄每個字元出現的最大位置,c記錄最後開始位置
用本次的位置減去上次的開始位置,即為當前包含子串的最大長度
用mx記錄每個子串的最大值
public
class
solution
return mx;
}}
兩層迴圈得到全部子串
判斷子串是否存在相同字元
儲存滿足條件的最長子串
public
class
solution
r.add(s[k]);
}if(!flag)}}
return mx;
}}
3 無重複字元的最長子串(滑動視窗解法)
無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 s bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 ...
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 用 i...
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 無重複字元的最長子串是 b 其長度為 1。示例 3 輸入 pwwkew 輸出 3 解釋 無重複字元的最長子串是...