codechef+Your Name is Mine

Your Name is Mine

Problem code: NAME2

 

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;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值