光榮《刀劍亂舞無雙》更新 內番風裝束第三彈登場
阿新 • • 發佈:2022-03-17
劍指 Offer 48. 最長不含重複字元的子字串
題目
連結
https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/
問題描述
請從字串中找出一個最長的不包含重複字元的子字串,計算該最長子字串的長度。
示例
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
提示
s.length <= 40000
思路
雙指標加雜湊表,用於存放是否重複。
注意區間的邊界。
複雜度分析
時間複雜度 O(n)
空間複雜度 O(1)
程式碼
Java
public int lengthOfLongestSubstring(String s) { Map<Character, Integer> dic = new HashMap<>(); int i = -1, res = 0; for (int j = 0; j < s.length(); j++) { if (dic.containsKey(s.charAt(j))) { i = Math.max(i, dic.get(s.charAt(j))); } dic.put(s.charAt(j), j); res = Math.max(res, j - i); } return res; }