双指针
判断子序列的关键在于,s 中的字符只需要按顺序出现在 t 中即可,不要求连续。
因此可以用两个指针,i 指向 s,j 指向 t。固定 i,不断向右移动 j,直到在 t 中找到和 s[i] 相同的字符。如果一直找到 t 末尾都没找到,说明 s 不是 t 的子序列;否则继续匹配 s 的下一个字符。
如果最终 s 的所有字符都能依次找到,那么它就是 t 的子序列。
时间复杂度 $O(m + n)$
空间复杂度 $O(1)$
1 | class Solution { |