c/c++语言开发共享使用qsort排序字符串以检查它们是否是Anagram

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 Anagramn"); 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()


    请注意

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

    字符串不能修改,同样在

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

    只有在这种情况下,您可能会遇到运行时错误,因为它是字符串文字。 看这篇文章。

      以上就是c/c++开发分享使用qsort排序字符串以检查它们是否是Anagram相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519295.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐