您的位置:首页 > 其它

【字符串】变位词

2015-10-25 21:34 281 查看
给定一本英语单词词典,请找出所有的变位词集。所谓的变位词是指,组成各个单词的字母完全相同,只是字母排列的顺序不同。

如果只是给出一个词,要在库里查询它的变位词,那么遍历一次库,两个单词比较的时候,开辟char a[256]的空间记录每个字符出现的次数即可。

现在要讲库中每一个单词都归类到某个变位词集中,没法用char a[256]来空间换时间了。

如果内存放得下

第一步

遍历库,对单词中的字符做排序,写入到一张map中,如

word, tops,stop,age

那么map中存放的是:

dorw => word

opst => tops,stop

aeg => age

第二步

然后遍历这张map,逐个输出即可

这个map,可以是std::map <std::string, std::vector<std::string>>,

也可以存在redis里,用一个hash来存所有的key,用list来存各个key对应的单词列表

如果内存放不下

应该用mapreduce来做
map阶段输出

dorw word

opst
tops

opst
stop

aeg
age

reduce阶段拿到的数据已经是排过序的,就好做了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: