第二题:T2子序列的判定
标签:字符串
题意:给定一个字符串
p
p
p和字符串
t
t
t,判断
p
p
p是否是
t
t
t的一个子序列。子序列就是字符串中保持原本顺序但不必连续的字符序列。(
1
≤
∣
p
∣
≤
∣
t
∣
≤
300
,
000
1≤∣p∣≤∣t∣≤300,000
1≤∣p∣≤∣t∣≤300,000)
题解:从前往后遍历字符串
p
p
p的每个字符,同时遍历字符串
t
t
t,一直到找到对应字符或者到最后一个字符为止,找到后同时往后推一位,继续找;没找到,直接输出
N
o
No
No跳出即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string p, t;
cin >> p >> t;
int n = p.size(), m = t.size();
for (int i = 0, j = 0; i < n; i++, j++) {
while (j < m && t[j] != p[i]) j++;
if (j == m) { // 到t字符串最后没找到对应的字符
cout << "No";
return 0;
}
}
cout << "Yes";
return 0;
}