日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列

發布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我是小張同學,立志用最簡潔的代碼做最高效的表達


以下是我個人做的題解,每個題都盡量囊括了所有解法,并做到了最優解,歡迎大家收藏!留言!

傳送門——>Leecode大廠熱題100道系列題解


問題描述

給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。

示例 1:
輸入: s = “abcabcbb”
輸出: 3
解釋: 因為無重復字符的最長子串是 “abc”,所以其長度為 3。

示例 2:
輸入: s = “bbbbb”
輸出: 1
解釋: 因為無重復字符的最長子串是 “b”,所以其長度為 1。

示例 3:
輸入: s = “pwwkew”
輸出: 3
解釋: 因為無重復字符的最長子串是 “wke”,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,“pwke” 是一個子序列,不是子串。

示例 4:
輸入: s = “”
輸出: 0

提示:
0 <= s.length <= 5 * 104
s 由英文字母、數字、符號和空格組成


解法

  • hash表判重 + 滑動窗口隊列

復雜度分析

  • 時間復雜度:O(N)O(N)O(N),其中NNN是字符串的長度。左指針和右指針分別會遍歷整個字符串一次。

  • 空間復雜度:O(∣Σ∣)O(|\Sigma|)O(Σ),其中Σ\SigmaΣ表示字符集(即字符串中可以出現的字符),∣Σ∣|\Sigma|Σ表示字符集的大小。在本題中沒有明確說明字符集,因此可以默認為所有 ASCII 碼在 [0,128)[0, 128)[0,128)內的字符,即∣Σ∣=128|\Sigma| = 128Σ=128。我們需要用到哈希集合來存儲出現過的字符,而字符最多有 ∣Σ∣|\Sigma|Σ個,因此空間復雜度為 O(∣Σ∣)O(|\Sigma|)O(Σ)

class Solution { public:int lengthOfLongestSubstring(string s) {int maxLen = 0;unordered_map<char, int>um;queue<char>q;for(int i = 0; i < s.length(); i++) {q.push(s[i]);um[s[i]]++;if(um[s[i]] == 1) maxLen = max(q.size(), maxLen);if(um[s[i]] > 1) {while(um[s[i]] > 1) {um[q.front()]--;q.pop();}}}return maxLen;}int max(int a, int b) {return a > b ? a : b;} };

孤獨是非常有必要的,一個人在孤獨時間所做的事,決定了這個人和其他人根本的不同。

總結

以上是生活随笔為你收集整理的Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。