我们称一个字符串 S 包含字符串 T 是指 T 是 S 的一个子序列,即可以从字符串 S 中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与 T 完全一样。
由于 S 的长度不超过 1e3,所以可以使用 $O(N)$ 的算法。
从 $s_1$ 枚举到 $s_2$,如果 $s_i = t_x$,那么就是匹配到了一个字符,那么 ++x。
code:
#include <bits/stdc++.h>
using namespace std;
string s, t;
signed main() {
cin >> s >> t;
int sl = s.size();
s = ' ' + s; t = ' ' + t;//个人习惯
int tmp = 1;//从 t1 开始匹配
for (int i=1; i<=sl; i++) {//枚举 si
tmp += bool (s[i] == t[tmp]);//如果匹配成功就 ++ tmp
} cout << -- tmp;//由于从 1 开始所以要先减去 1
}
萌新写题解不容易/kel
给个赞呗/qq