求算法实现

hhq201 2012-02-07 09:28:25
有2个字符串 "this is a test program" 和 "a program test this is" 。结果是要判断得出这2个字符串相等。
即怎么比较2个相同但排列顺序不同的任意长字符串是否等同。
(考虑字符串中支持中文等特殊字符)
...全文
260 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
打酱油BY 2012-02-09
  • 打赏
  • 举报
回复
先编码,在排序
但是怎么编码啊?
丰清云淡 2012-02-08
  • 打赏
  • 举报
回复
排序+比较
zhang691753540 2012-02-08
  • 打赏
  • 举报
回复
两个字符串进行异或操作; 最后结果为0就是相同
liutengfeigo 2012-02-08
  • 打赏
  • 举报
回复
素数~
小木 2012-02-08
  • 打赏
  • 举报
回复
排序的话 不只按首字母排序吧,不然不对的
赵4老师 2012-02-08
  • 打赏
  • 举报
回复
中文就难了
“养猪大如山老鼠头头死酿酒缸缸好造醋坛坛酸”
elegant87 2012-02-07
  • 打赏
  • 举报
回复
处理中英文混合的时候可以考虑用统一编码 unicode
wchar进行处理
elegant87 2012-02-07
  • 打赏
  • 举报
回复

//简单的实现一下
//思想是:先排序,在比较大小
#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;
}
}
}
newpuple 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hhq201 的回复:]
#4楼的方法,只能对单个字符的比较,不是字符串的比较,而且不支持中文,理解有误?
[/Quote]

其实字符串不就是一个个字符组成的串吗,而字符其实就是小点的数字,既然是数字当然可以排序拉,就拿你上面的例子来说,"this is a test program"排序之后就变成"a is program test this",两个字符数组存储的都是这样,你就用memcmp或者strcmp比较不就有结果了么,中文字符其实就是两个字符组成,一样可以排序
hhq201 2012-02-07
  • 打赏
  • 举报
回复
#1楼的方法只是第一步,字符串1存入哈希表,逐个读字符串2,在哈希表查找比较。时间复杂度为O(n),有没有更好的方法呢?还是我理解错了?

#4楼的方法,只能对单个字符的比较,不是字符串的比较,而且不支持中文,理解有误?
程序员小迷 2012-02-07
  • 打赏
  • 举报
回复
不是strcmp就解决了么
handoudouhao 2012-02-07
  • 打赏
  • 举报
回复
百度一下
newpuple 2012-02-07
  • 打赏
  • 举报
回复
方法1:排序
将两个数组分别排序存储到临时缓存中进行memcmp或者strcmp比较相等就是相等

方法2:建立二个数组unsigned char a[26]对应26个字母
遍历两个字符串,将对应的数组值+1 ---> a[string[i] - 'a']++;
然后比较二个数组的值是否一致
乐哉悠哉 2012-02-07
  • 打赏
  • 举报
回复
正解~
[Quote=引用 1 楼 gdujian0119 的回复:]

哈希存储每个单词……
[/Quote]
IVERS0N 2012-02-07
  • 打赏
  • 举报
回复
memcmp
孤独小剑 2012-02-07
  • 打赏
  • 举报
回复
哈希存储每个单词……

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧