【字符串】变位词

给定一本英语单词词典,请找出所有的变位词集。所谓的变位词是指,组成各个单词的字母完全相同,只是字母排列的顺序不同。

如果只是给出一个词,要在库里查询它的变位词,那么遍历一次库,两个单词比较的时候,开辟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阶段拿到的数据已经是排过序的,就好做了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值