简单的字符串抽取,按顺序遍历即可,复杂度o(n+m)
题目2 : crossgift
时间限制:5000ms
单点时限:1000ms
内存限制:256MB
描述
话说有个网易CC主播lily唱歌很好听,但是她粉丝很多,每次都有很多人要点歌。聪明的Lily想了个办法,她列出了两组礼物清单,并要求粉丝们按照清单来送礼物,送出的礼物既不能多,也不能少。而且如果是属于同一个组内的礼物,还必须按照顺序送出。Lily收到正确的两组礼物后,才开始唱歌。
Lily有时候很头疼,她又怎么知道收到的礼物就是符合要求,可以开始唱歌了呢?
比如有一次,Lily定好的第一组礼物清单顺序是:水晶、玫瑰、生日蛋糕;第二组礼物清单顺序是:棒棒糖、海洋之星,生日蛋糕。
Lily这边收到的礼物顺序是:水晶、玫瑰、棒棒糖、生日蛋糕、海洋之星、生日蛋糕。那Lily可以开始唱歌了吗?
上面的:水晶、玫瑰、棒棒糖、生日蛋糕、海洋之星、生日蛋糕就是符合Lily要求的。
但是如果收到:水晶、生日蛋糕、玫瑰、棒棒糖、海洋之星、生日蛋糕就不行,因为第一组礼物顺序不一样了。
如果收到水晶、玫瑰、幸运草、生日蛋糕、海洋之星、生日蛋糕,也不行,因为幸运草不在两组要求的礼物清单里面。
伟大的程序员,出来解救Lily吧。
输入
第一行是一个整数n,表示有n个测试用例。其中,1<= n <=100
接下来是n行,每一行有3个字符串。第一个字符串代表Lily要求第一个组礼物清单,第二个字符串代表第二组礼物清单。第三个字符串是主播当前收到的礼物。字符串中只包含小写英文字母[a~z],每一个字符代表一种礼物。每个字符串长度 1<= |S| <=1024。
复杂度要求O(|S|^2)或者更好, 其中|S|是字符串长度。
输出
输出总共n行,输出1对应礼物符合主播要求,0判断礼物不符合要求。
样例输入
6
abc dfg adfgbc
acf xyz afcxyz
accd bef accdbe
abc cdf cdabfc
xy yz xyz
xy jk xyjkxyjk
样例输出
1
0
0
1
0
0
#include<iostream>
using namespace std;
char a[1000],b[1000],c[2000],d[1000];
int main()
{
int n;
cin>>n;
while(n--)
{
cin>>a>>b>>c;
int len1=strlen(a);
int len2=strlen(b);
int len3=strlen(c);
if(len1+len2!=len3){
cout<<"0"<<endl;
continue;
}
else{
int i=0,j=0,k=0;
for(;j<len3;++j){
if(a[i]==c[j])
++i;
else
d[k++]=c[j];
}
if(i!=len1){
cout<<"0"<<endl;
continue;
}
d[k]='\0';
if(strcmp(b,d)==0)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
}
return 0;
}