我编写了以下 C 代码来检查两个给定的字符串是否是彼此的字谜。我知道这在复杂性/效率方面是最糟糕的,并且有很多更好的方法可以做到这一点。
#include "stdio.h"
main()
{
char s1[]="mist";
char s2[]="mitt";
int i,j,isanag=0;
if(strlen(s1)!=strlen(s2))
printf("Not anagrams\n");
for(i=0;i<strlen(s1);i++)
{
isanag=0;
for(j=0;j<strlen(s2);j++)
{
if(s1[i]==s2[j])
{
isanag = 1;
break;
}
}
if(isanag == 0)
{
printf("Not anagrams\n");
getch();
exit(0);
}
}
printf("Yes Anagrams\n");
getch();
}
这工作正常并打印正确的 Not Anagrams 如果我如下交换两个字符串的名称,它会给出错误的答案
char s1[]="mitt";
char s2[]="mist";
我知道 2 for 循环的编码方式,这很明显。
我能做些什么来改进这段代码并解决这个怪癖?