求算法实现
有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就解决了么
[解决办法]
[解决办法]
- 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就是相同
[解决办法]
先编码,在排序
但是怎么编码啊?