iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
自我挑戰組

leetcode系列 第 3

leetcode 3. Longest Substring Without Repeating Characters

  • 分享至 

  • xImage
  •  

題目:
Given a string s, find the length of the longest substring without duplicate characters.

給定一個字串,找出最長s的長度 子字串沒有重複的字元。
https://ithelp.ithome.com.tw/upload/images/20250917/20169340ZTDEoUrqLp.png
題目重點

輸入:一個字串 s。

輸出:最長 不包含重複字元 的子字串長度。

關鍵:不能有重複字元、子字串必須連續。

思路拆解

直覺做法 (Brute Force)

枚舉所有子字串,再檢查是否有重複字元。

時間複雜度 O(n³) → 太慢,不適合大字串。

優化想法:

我們要的是「連續」子字串,適合用 滑動視窗 (Sliding Window)。

用兩個指標 left 和 right,維護一個「不含重複字元的區間」。

處理重複:

當 right 指向的新字元已經存在於視窗裡,代表有衝突。

這時候要把 left 往右移,並從集合裡移除左邊字元,直到沒有重複為止。

更新答案:

每次 right 移動後,當前視窗的長度 = right - left + 1。

用 maxLen 記錄最大值。

視覺化例子

字串 "abcabcbb"

開始:left=0, right=0 → 視窗 "a" → 長度=1

right=1 → "ab" → 長度=2

right=2 → "abc" → 長度=3

right=3 → "abca" → 有重複 "a" → 移動 left → "bca" → 長度=3

right=4 → "bcab" → 有重複 "b" → 移動 left → "cab" → 長度=3

… 最後最大長度 = 3


上一篇
leetcode 2. Add Two Numbers
下一篇
leetcode 4. Median of Two Sorted Arrays
系列文
leetcode4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言