直接遍歷,不能轉換就刪除
[cpp] #include<stdio.h>
#include<string.h>
int link[30][30];
int main()
{
int i,j,len1,len2,n,t,op=1;
char s1[1100],s2[1100],ch1[2],ch2[2];
scanf("%d",&t);
while(t--)
{
memset(link,0,sizeof(link));
scanf("%s%s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
scanf("%d",&n);
while(n--)
{
scanf("%s%s",ch1,ch2);
link[ch1[0]-'a'][ch2[0]-'a']=1;
}
for(j=0,i=0;i<len1&&j<len2;i++,j++)
{
while(s1[i]!=s2[j]&&link[s2[j]-'a'][s1[i]-'a']==0)
{
j++;
}
if(j>=len2)break;
}
printf("Case #%d: ",op++);
if(i>=len1)
puts("happy");
else puts("unhappy");
}
return 0;
}
#include<stdio.h>
#include<string.h>
int link[30][30];
int main()
{
int i,j,len1,len2,n,t,op=1;
char s1[1100],s2[1100],ch1[2],ch2[2];
scanf("%d",&t);
while(t--)
{
memset(link,0,sizeof(link));
scanf("%s%s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
scanf("%d",&n);
while(n--)
{
scanf("%s%s",ch1,ch2);
link[ch1[0]-'a'][ch2[0]-'a']=1;
}
for(j=0,i=0;i<len1&&j<len2;i++,j++)
{
while(s1[i]!=s2[j]&&link[s2[j]-'a'][s1[i]-'a']==0)
{
j++;
}
if(j>=len2)break;
}
printf("Case #%d: ",op++);
if(i>=len1)
puts("happy");
else puts("unhappy");
}
return 0;
}