#include<cstdio>
#include<cstring>
char a[1000000],b[1000000];
int main()
{
while(scanf("%s %s",a,b)!=EOF)
{
getchar();
int f=0;int k=0;
for(int i=0;a[i]!='\0';i++)
{
if(b[k]=='\0'){f=1;break;
}
for(;b[k]!='\0';k++)
{
if(b[k]==a[i])
{
//printf("%c\n",b[k]);
k++;
if(b[k]=='\0')f=2;
break;
}
}
if(b[k]=='\0'&&a[i+1]=='\0'&&f==0){f=1;break;
}
}
if(f==1)printf("No\n");
else printf("Yes\n");
}
return 0;
}
优化后
#include<iostream>
using namespace std;
char a[1000000],b[1000000];
int main()
{
while(scanf("%s %s",a,b)!=EOF)
{
getchar();
int k=-1;
int f=0;
for(int i=0;a[i]!='\0';i++)
{
while(1)
{
k++;
if(b[k]=='\0')break;
if(b[k]==a[i])break;
}
if(b[k]=='\0')break;
if(a[i+1]=='\0')f=1;
}
if(f==0) printf("No\n");
else printf("Yes\n");
}
}