學習路線/雙指標

392. 判斷子序列

Easy

Is Subsequence

Two PointersStringGreedy

題目描述

給定字串 s 和 t,判斷 s 是否為 t 的子序列。子序列是指從 t 中刪除若干字元(可以不刪)後,剩餘字元保持原有順序所組成的新字串。

LeetCode 392原題連結 →

解法思路

  1. 使用雙指針 i 和 j 分別指向 s 和 t 的開頭
  2. 遍歷 t:若 t[j] == s[i],則 i 前進(匹配成功)
  3. 無論是否匹配,j 都前進一步
  4. 若 i 走完 s 的長度,表示 s 是 t 的子序列

複雜度分析

  • 時間複雜度:O(n)
  • 空間複雜度:O(1)

字串 s(子序列候選)

i
a
b
c
012

字串 t(目標字串)

a
h
b
g
d
c
012345
j
演算法開始:雙指針 i 指向 s 開頭,j 指向 t 開頭。我們要逐一確認 s 的每個字元都能在 t 中按順序找到。
1 / 14