题目链接:点击打开链接
题目大意:输入两个字符串s和t判断能否从t中删除0或多个字符,得到s
思路: 字符查找
分析:
1. 将游标定位在t开头,对于s中的每个字符,在t中查找.找到后就把游标定位在下一个位置,继续查找s的下一个字符.
2.某个字符找不到,说明无法得到s.
代码:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int find(string s, int pos, char target)
{
int l = s.length();
for (int i = pos; i < l; ++i)
if (s[i] == target)
return i;
return -1;
}
int main()
{
string a, b;
while (cin >> a >> b)
{
int l = a.length();
int pos = 0, ok = 1;
for (int i = 0; i < l; ++i)
{
pos = find(b, pos, a[i]);
if (pos >= 0)
++pos;
else
{
ok = 0;
break;
}
}
if (ok)
printf("Yes\n");
else
printf("No\n");
}
}