gpt4 book ai didi

c - 使用 qsort 对字符串进行排序以检查它们是否是 Anagram

转载 作者:行者123 更新时间:2023-11-30 18:34:39 25 4
gpt4 key购买 nike

static int myCompare (const void * a, const void * b)
{
return strcmp (*(const char **) a, *(const char **) b);
}

void sort1(const char *str1[],int n1)
{
qsort (str1,n1,sizeof (const char *), myCompare);

}
void sort2(const char *str2[], int n2)
{
qsort( str2, n2, sizeof (const char *),myCompare);
}

int main ()
{
const char *str1[] = {"listen"};
const char *str2[] = {"silent"};

int n1 = sizeof(str1)/sizeof(str1[0]);
int n2 = sizeof(str2)/sizeof(str2[0]);

sort1(str1,n1);
sort2(str2,n2);

int x = strcmp(*str1,*str2);

if(x==0)
printf("\n Both The Strings Are Anagram\n");

else
printf("\n Strings Are Not Anagram \n");
return 0;
}

我希望对字符串进行排序,然后比较它们,以检查它们是否是Anagram

问题是字符串未排序

最佳答案

如果您需要通过对两个字符串进行排序来检查它们是否是字谜词,您可以将字符串放入一维字符数组中,例如

char str1[]="silent";
char str2[]="listen";

qsort(str1, strlen(str1), sizeof(str1[0]), cmp);
qsort(str2, strlen(str2), sizeof(str2[0]), cmp);

其中cmp()是一个函数

int cmp(const void *a, const void *b)
{
return *(const char *)a - *(const char *)b;
}

qsort() 调用之后,使用 strcmp() 就像

if(strcmp(str1, str2)==0)
{
//anagrams
}

了解qsort() herehere .

<小时/>

请注意

const char *str1[] = {"listen"};

字符串不能被修改,同样的情况

char *str1[]={"listen"};

仅在这种情况下,您可能会收到运行时错误,因为它是字符串文字。请参阅this发布。

关于c - 使用 qsort 对字符串进行排序以检查它们是否是 Anagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com