子序列
1、题目内容
Description
题目描述
给你两个字符串a和b,请问字符串a是否可以去掉若干个字符以后成为字符串b?。
输入
第一行是一个整数K,表示样例数。 以后每个样例占2行,分别为两个字符串a和b。字符串只有英文大写字母组成,长度不超过200。
输出
每行输出一个结果,如果包含,输出Yes,否则输出No。
样例输入
2
XATBBU
XTU
XATBBU
UTX
样例输出
Yes
No
2、题目分析
做这个题目的时候我们将字符串b中的字符一个一个的去a中找,看是不是都在a中存在,如果都存在的话那就是满足条件的子序列咯。值得注意的就是说,找字符的时候需要按照b的字符串字符顺序来的。
3、参考代码
#include<stdio.h>
#include<string.h>
int main()
{
int k;
scanf("%d",&k);
while(k--)
{
int flag=1;
int m,n,i,count,sum;
char a[202],b[202];
scanf(" %s",a);
scanf(" %s",b);
m=strlen(a);
n=strlen(b);
count=0;
for(i=0;i<m;i++) //在a这个字符串中去找
{
if(count<n&&b[count]==a[i]) //找到一个我们就加个1
{
count++;
}
}
if(count==n) printf("Yes\n"); //如果b中所有的字符都在a中找到了,那就是子序列咯。
else printf("No\n");
}
return 0;
}