Leetcode[字串] 3. 無重複字元的最長子串 10行極簡寫法!
審題
給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
之前在陣列部分做了幾道雙指標,在這道題上其思想一樣適用,如果有讀者之前沒有了解過雙指標的話,可以參考這篇部落格 >>>戳這裡。不看其實也沒事。核心思想就是利用兩個指標代替兩層迴圈,從而降低一個冪次的複雜度,也有說法管這個叫移動視窗。
程式碼實現
瞭解了雙指標後,我們寫偽碼如下:
當尾指標沒到邊界:
檢查map裡有尾指標指向元素的值是否為零:
是:尾指標元素入map,尾指標++,cnt++,更新max
否:頭指標加加,頭元素- -,cnt- -
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maximum=0, front=0, rear=0, cnt=0;
map<char,int> m;
while ( rear != s.size() ) {
if ( m[s[rear]] == 0 ) {
m[s[rear]]++; rear++; cnt++;
if ( cnt>maximum ) maximum = cnt;
} else {
m[s[front]]--; front++; cnt--;
}
}
return maximum;
}
};
反思
較基礎的雙指標應用,應熟練掌握。
相關文章
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- 3. 無重複字元的最長子串字元
- LeetCode——無重複字元的最長子串LeetCode字元
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- leetcode-3無重複字元的最長子串LeetCode字元
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- 無重複字元的最長子串字元
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 3 無重複字元的最長子串字元
- java無重複字元的最長子串Java字元
- Leetcode 3.無重複字元的最長子串 字典記錄每個字元最後出現的位置LeetCode字元
- 求字串中不含重複字元的最長子串字串字元
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- 演算法-無重複字元的最長子串演算法字元
- 【每日一題】無重複字元的最長子串每日一題字元
- 【Leetcode】3. Longest Substring Without RepeatingCharacters無重最長子串LeetCodeGC
- LeetCode3:Longest Substring Without Repeating Characters(無重複字元的最長子串)LeetCode字元
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- LCR 016. 無重複字元的最長子串(中)字元
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- 最長不含重複字元的子字串字元字串
- 無重複字元的最長子串問題 (移動視窗法求解)字元
- leetcode 解題 3. 無重複字元的最長子串-python3@ 官方,暴力解法和視窗滑動解法LeetCode字元Python
- leetcode 劍指 Offer 48. 最長不含重複字元的子字串LeetCode字元字串
- JZ-073-最長不含重複字元的子字串字元字串
- Leet Code 3. Longest Substring Without Repeating Characters (最長的沒有重複字元的子字串)字元字串
- 滑動視窗3.替換後最長重複字元子串字元
- 每天一道演算法題:無重複字元的最長子串演算法字元
- 讓我們一起啃演算法----無重複字元的最長子串演算法字元
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- 演算法練習:求字串的最長重複子串(Java實現)演算法字串Java
- 【LeetCode】424. 替換後的最長重複字元LeetCode字元
- 20241108,LeetCode 每日一題,用 Go 計算字串中最長無重複字元LeetCode每日一題Go字串字元