cf1185b
题目大意就是 一个人的键盘坏了 他的键盘每次按下去一个键就会出现一个至多个该字母 有n组数据 每次输入两个字符串 a,b问是否有可能在键盘上输入a的时候会输出b这个字符串。
思路,因为是按顺序输入 所以只需要按照a的顺序遍历看b是否符合这里要注意一个坑就是当有很多个相同的字母联在一起时该怎样处理。
比如ll对应llll这时我们应该a和b的两个计数变量同时相加直到a的“最后”一个相同的字母然后继续向下便利字母。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,c[100],flag=0,j;
string a,b;
while(cin>>n)
{
int i=0;
while(n--)
{
flag=0,j=0,i=0;
// memset(c,0,sizeof(c));
cin>>a>>b;
if(a.size()>b.size()||a[0]!=b[0]||a[a.size()-1]!=b[b.size()-1])
{
flag=1;
}
else
{
for(i=0; i<a.size(); i++)
{
if(a[i]==a[i+1]&&a[i]==b[j])
{
j++;
continue;
}
if(a[i]!=b[j])
{
flag=1;
break;
}
else
while(a[i]==b[j])
{
j++;
}
}
}
if(flag||i!=a.size()||j!=b.size())
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
}
}