读书人

求算法实现,该怎么解决

发布时间: 2012-03-09 21:42:54 作者: rapoo

求算法实现
有2个字符串 "this is a test program" 和 "a program test this is" 。结果是要判断得出这2个字符串相等。
即怎么比较2个相同但排列顺序不同的任意长字符串是否等同。
(考虑字符串中支持中文等特殊字符)

[解决办法]
哈希存储每个单词……
[解决办法]
memcmp
[解决办法]
正解~

探讨

哈希存储每个单词……

[解决办法]
方法1:排序
将两个数组分别排序存储到临时缓存中进行memcmp或者strcmp比较相等就是相等

方法2:建立二个数组unsigned char a[26]对应26个字母
遍历两个字符串,将对应的数组值+1 ---> a[string[i] - 'a']++;
然后比较二个数组的值是否一致
[解决办法]
百度一下
[解决办法]
不是strcmp就解决了么
[解决办法]
探讨
#4楼的方法,只能对单个字符的比较,不是字符串的比较,而且不支持中文,理解有误?

[解决办法]
C/C++ code
//简单的实现一下//思想是:先排序,在比较大小#include <stdio.h>#include <stdlib.h>#include <string.h>//函数声明 void stringSort(char* str);int main(){    char str1[50] = "this is a test program" ;    char str2[50] = "a program test this is";    stringSort(str1);    stringSort(str2);    if(strcmp(str1,str2) == 0)      printf("Equal\n");    else      printf("Not equal\n");    system("pause");    return 0;}//函数实现 void stringSort(char* str){     int len = strlen(str);     int i,j;     char temp;     //最简单的冒泡排序,字符由小到大排序      for(i=len-1;i>0;--i)       for(j=0;j<i;++j)       {          if(str[j] > str[j+1])          {             temp = str[j];             str[j] = str[j+1];             str[j+1] = temp;          }       }}
[解决办法]
处理中英文混合的时候可以考虑用统一编码 unicode
wchar进行处理
[解决办法]
排序+比较
[解决办法]
中文就难了
“养猪大如山老鼠头头死酿酒缸缸好造醋坛坛酸”
[解决办法]
排序的话 不只按首字母排序吧,不然不对的
[解决办法]
素数~
[解决办法]
两个字符串进行异或操作; 最后结果为0就是相同
[解决办法]
先编码,在排序
但是怎么编码啊?

读书人网 >C语言

热点推荐