這類的題目在LeetCode有不少,但變化性少,只會這個學會了,就能解部分類似的。
依 Follow up 的方式,我猜,要從 s 的組成字元逐一找該字元是否在 t 裡面,但我不是很懂它想表達的意思。
但沒關係,我的解法也是逐一去找的運作模式。
既然子順序的中間可以塞入非配對的字元,那可想成把那些字元拿掉後,剩下的字串跟 s 能全配對那就是 True。
從 t 的左至右搜查,如果匹對到 s[0] ,那就只能目前從 t 剩下的去匹配 s[1] ,中間沒匹配的都是可以拿掉的字元。
當 len(s) == 0 的時候,即為全匹配。如果還有 s 的字元但 t 已經到最後,那就沒有成功匹配。
Python
class Solution: def isSubsequence(self, s: str, t: str) -> bool: if not s: return True for i, c in enumerate(t): if c == s[0]: return self.isSubsequence(s[1:], t[i+1:]) return FalseC#
public class Solution { public bool IsSubsequence(string s, string t) { int n = s.Length; if(n == 0){return true;} int si = 0; foreach(char c in t) { if(c == s[si]) { si += 1; if(si == n){return true;} } } return false; } }