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(∣Σ∣)。
孤獨是非常有必要的,一個人在孤獨時間所做的事,決定了這個人和其他人根本的不同。
總結
以上是生活随笔為你收集整理的Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leecode01. 两数之和——Lee
- 下一篇: Leecode大厂热题100道系列题解