您的位置:首页 > 其它

codechef+Your Name is Mine

2013-05-05 14:12 183 查看

Your Name is Mine

Problem code: NAME2

Submit
My Submissions
All Submissions

In an attempt to control the rise in population, Archer was asked to come up with a plan. This time he is targeting marriages. Archer, being as intelligent as he is, came up with the following plan:
A man with name M is allowed to marry a woman with nameW, only if
M is a subsequence of
W or W is a subsequence of M.
A is said to be a subsequence of B, ifA can be obtained by deleting some elements of
B without changing the order of the remaining elements.
Your task is to determine whether a couple is allowed to marry or not, according to Archer's rule.
Input
The first line contains an integer T, the number of test cases.T test cases follow. Each test case contains two space separated stringsM and
W.
Output
For each test case print
"YES"
if they are allowed to marry, else print
"NO"
. (quotes are meant for clarity, please don't print them)
Constraints

1 ≤ T ≤ 100
1 ≤ |M|, |W| ≤ 25000 (|A| denotes the length of the string A.)
All names consist of lowercase English letters only.

Example
Input:3john johannaira irakayla jaylaOutput:YESYESNO
Explanation
Case 1: Consider S = "johanna". So,S[0] = 'j', S[1] = 'o', S[2] = 'h' and so on. If we remove the indices [3, 4, 6] or [3, 5, 6] from S, it becomes"john".
Hence "john" is a subsequence of S, so the answer is "YES".
Case 2: Any string is a subsequence of it self, as it is formed after removing"0" characters. Hence the answer is
"YES".
Case 3: "jayla" can not be attained from"kayla" as removing any character from
"kayla" would make the string length smaller than"jayla", also there is no
'j' in "kayla". Similar reasoning can be applied to see why"kayla" can't be attained from
"jayla". Hence the answer is "NO".

/*
题目大意:给你两个字符串,要求你求一个字符串删掉某些字符(不改变原有的顺序),
能否等于另一个字符串,简单说就是经过删除变形后能否包含另一个字符串
思路:直接遍历
*/
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--){
char a[25003],b[25003],c[25003];
cin>>a>>b;
int k=0,i;
int lena=strlen(a),lenb=strlen(b);
if(lena<lenb)
{
memcpy(c,a,lena+1);
memcpy(a,b,lenb+1);
memcpy(b,c,lena+1);
}
lena=strlen(a);
lenb=strlen(b);
for(i=0;i<lena;i++)
if(a[i]==b[k])
k++;
if(k==lenb)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐