WA了好久。。
No写成了NO
Yes写成了YES
读题:没问题
算法:光是正确构造出来一个结果是远远不够的,我们更应该考虑在构造的过程中所使用的算法(比如贪心)是否会使得后面的构造失败。
实现:没问题
细节:No写成了NO,Yes写成了YES
代码
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxl = 100010;
char s[maxl],t[maxl];
int sl,tl;
int sk,tk;
int solve()
{
scanf("%s %s",s,t);
if(s[0]!=t[0]) return 0*puts("No");
sl=strlen(s);
tl=strlen(t);
int sb=1;
while(sb<min(sl,tl)&&s[sb]==t[sb]&&t[sb]==t[sb-1]) sb++;
tk=tl-1;
for(sk=sl-1;sk>=sb;sk--)
{
while(tk>=sb&&t[tk]!=s[sk]) tk--;
if(tk<sb) return 0*puts("No");
tk--;
}
if(tk>=sb&&t[sb]==t[sb-1]) return 0*puts("No");
return 0*puts("Yes");
}
int main()
{
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}