無重複字元的最長子串問題 (移動視窗法求解)
問題:給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
class Solution {
public int lengthOfLongestSubstring(String s) {
//本題採用滑動視窗來解決
//記錄左邊界
int left = 0;
//記錄最大值
int max = 0;
//滑動視窗,用於裝字元子串
Map<Character, Integer> map = new HashMap<Character, Integer>();
for(int i = 0; i < s.length(); i ++){
//看是否有重複的部分
if(map.containsKey(s.charAt(i))){
//千萬要注意,這裡有一個加一
left = left > (map.get(s.charAt(i)) + 1) ? left : (map.get(s.charAt(i)) + 1);
}
map.put(s.charAt(i), i);
max = max > (i - left + 1) ? max : (i - left + 1);
}
return max;
}
}
小結:使用移動視窗法的時間複雜度是O(n),空間複雜度是O(m),這個是跟出現的子串有關的(PS:如果使用暴力求解法,兩個for迴圈遍歷頭和尾,然後用HashSet來儲存,時間複雜度為O(n^3),空間為O(m))
相關文章
- 用滑動視窗來解決最長無重複子串問題
- 無重複字元的最長子串字元
- 【每日一題】無重複字元的最長子串每日一題字元
- java無重複字元的最長子串Java字元
- 3 無重複字元的最長子串字元
- 3. 無重複字元的最長子串字元
- LeetCode——無重複字元的最長子串LeetCode字元
- 演算法-無重複字元的最長子串演算法字元
- 滑動視窗3.替換後最長重複字元子串字元
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- leetcode-3無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- 滑動視窗法——子串相關問題
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- LCR 016. 無重複字元的最長子串(中)字元
- 求字串中不含重複字元的最長子串字串字元
- 每天一道演算法題:無重複字元的最長子串演算法字元
- Leetcode[字串] 3. 無重複字元的最長子串 10行極簡寫法!LeetCode字串字元
- 讓我們一起啃演算法----無重複字元的最長子串演算法字元
- [LeetCode] Longest Substring Without Repeating Characters 最長無重複字元的子串LeetCode字元
- 最長不含重複字元的子字串字元字串
- Leetcode 3.無重複字元的最長子串 字典記錄每個字元最後出現的位置LeetCode字元
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- leetcode 解題 3. 無重複字元的最長子串-python3@ 官方,暴力解法和視窗滑動解法LeetCode字元Python
- LeetCode3:Longest Substring Without Repeating Characters(無重複字元的最長子串)LeetCode字元
- 用 PHP 在 力扣 上演算法 [無重複字元的最長子串]{一天一更}PHP力扣演算法字元
- JZ-073-最長不含重複字元的子字串字元字串
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 最長子串
- 動態規劃求解最長上升子序列問題動態規劃
- SPOJ 687. Repeats(字尾陣列求最長重複子串)陣列