面試演算法 1 無重複字元的最長子串

2021-10-04 14:22:41 字數 1234 閱讀 1576

示例 1:

輸入: "abcabcbb"

輸出: 3 

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

示例 2:

輸入: "bbbbb"

輸出: 1

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

示例 3:

輸入: "pwwkew"

輸出: 3

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

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

思路

標籤:滑動視窗

採取滑動視窗的方法降低時間複雜度

定義乙個 map 資料結構儲存 (k, v),其中 key 值為字元,value 值為字元位置 +1,加 1 表示從字元位置後乙個才開始不重複

我們定義不重複子串的開始位置為 start,結束位置為 end

隨著 end 不斷遍歷向後,會遇到與 [start, end] 區間內字元相同的情況,此時將字元作為 key 值,獲取其 value 值,並更新 start,此時 [start, end] 區間內不存在重複字元

無論是否更新 start,都會更新其 map 資料結構和結果 ans。

時間複雜度:o(n)o(n)

**

public static int getstringlength(string str) 

map.put(ch, end + 1);

}system.out.println("map" + json.tojsonstring(map));

return ens;

}public static void main(string args)

畫解

1 無重複字元的最長子串

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

無重複字元最長子串

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

無重複字元最長子串

題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...