题目描述
给定两个字符串s和t,判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。
输入
输入文件包括多组测试数据,每组测试数据占一行,包括两个由ASCII码组成的字符串s和t,它们的长度都不超过100000。
输出
对于每个测试数据输出一行,如果s是t的子序列,则输出“Yes”,否则输出“No”。
样例输入 复制
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
样例输出 复制
Yes
No
Yes
No
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char s[10000];char t[10000];
char copy[10000];
while(scanf("%s%s",s,t)!=EOF)
{
int m=0;int n=0;
for(int i = 0;i<strlen(s);i++)
{
for(int j =n;j<strlen(t);j++)
{
if(s[i]==t[j])
{
copy[m] = t[j];
m++;
n = j;
break;
}
}
}
copy[m] ='\0';
if(strcmp(copy,s)==0)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}