首页
社区
课程
招聘
求两个字符串数组取相同项插入新数组的最优算法
发表于: 2011-10-31 23:03 5147

求两个字符串数组取相同项插入新数组的最优算法

2011-10-31 23:03
5147
两个字符串数组, 比较其中内容相同的项并插入到新的数组, 如何创建新数组和插入新数组不作考虑, 只需要考虑比较算法, 求最优的比较算法, 暂且命名这两个数组分别为 char** Result[n] 和 char** Find[m]吧。

for (int i = 0; i < n; i++)
{
     for (int j = 0; j < m; j++)
    {
          if (/* 判断Result 是否 等于 Find[j]  */)
                // 插入Find[m]到新数组;
    }
}


这是比较中规中矩的做法, 求最优算法。 伪代码也行, 谢谢各位。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 377
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GVU
2
如果换成for(int j = 0; j < m; j++) 在外面, 不算答案。
2011-10-31 23:04
0
雪    币: 2676
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对较小的一个数组计算hash值,使用hash set保存,然后遍历较大的数组,计算其hash值,测试hash值是否在set中存在且字符串确实一致。
2011-10-31 23:26
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
4
我来提供一个比较容易实现的思路.
先通过某哈希算法算好Result对应的哈希值存入temp数组中,然后判断的时候只要Find的也经过一样的哈希算法计算以后判断结果是否存在于temp数组中,就可以断定是否相等.
这个方法的速度会比两个for快,但是需要额外的空间,当速度有要求的时候,空间换时间还是比较合适的方法.
2011-10-31 23:30
0
雪    币: 377
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GVU
5
呵呵, 之前看过很长一段时间的数据结构, 只看了部分, 顺序数组、链表、栈、队列等, 看到树的时候就没法静下心去看了, 图也只是粗略地看了一下, 其他都没仔细看了, 看来我也是个很浮躁的人, 一定要找个时间好好学习。。

哈希的确是个很快捷的方法, 我修改的是暴雪公司的CHashAlgo, 的确好用, 在这里再次感谢各位的帮助。
2011-11-2 09:23
0
雪    币: 377
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GVU
6
看来论坛程序有些问题, 我追加了15分, 就有了25奖赏, 3楼给了15, 4楼给了10, 怎么只显示3楼10分。
2011-11-2 09:26
0
游客
登录 | 注册 方可回帖
返回
//