算法
(暴力匹配) $O(n)$
先维护一个指针$si$,用于记录$s$在$t$中已经匹配到第几个字符了。
扫一遍$t$,检测$t$的每个字符是否与$s[si]$是匹配的,如果是匹配的话,则将$si$加$1$,表示已经有一个$index$已经被匹配了,直到你发现$si$已经抵达了$s$的末尾,即$si==sn$的时候,也就是说$s$中已经没有字符在等待被匹配的了,那就说明已经匹配完了。
C++ 代码
class Solution {
public:
bool isSubsequence(string s, string t) {
// si: index to be matched
int si = 0;
int sn = s.length();
int tn = t.length();
for (int i = 0; i < tn; ++i) {
if (si == sn) {
return true;
}
if (t[i] == s[si]) {
si++;
}
}
return si == sn;
}
};