【字符串】变位词
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对应的单词列表
map阶段输出
dorw word
opst
tops
opst
stop
aeg
age
reduce阶段拿到的数据已经是排过序的,就好做了。
如果只是给出一个词,要在库里查询它的变位词,那么遍历一次库,两个单词比较的时候,开辟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阶段拿到的数据已经是排过序的,就好做了。
相关文章推荐
- android中图片的三级cache策略(内存、文件、网络)之二:内存缓存策略 .
- 排序算法二:直接插入排序
- 程序员不要仅靠经验,不多思考
- cf 19a World Football Cup
- Foundation 之 NSDictionary和NSMutableDictionary
- 创建git私有仓库
- 第十章、国际供应源搜寻中的风险和机会
- (转)Java读带有BOM的UTF-8文件乱码原因及解决方法
- [转] Eclipse的Tomcat插件安装
- lightoj 1356 - Prime Independence 【质因子分解 奇偶构图 + HK优化】
- 第118讲:Hadoop内存需求量及Namenode内存使用详解学习笔记
- maven配置问题
- 不用算术运算符实现两个数的加法(按位异或)
- android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略 .
- 二叉树中遇到的问题
- Notes on "Understanding the Linux kernel“
- 通过JMS监听Oracle AQ,在数据库变化时触发执行Java程序
- 仅在当前目录编译的通用Makefile
- Java 多维数组遍历
- 让开发板飞——四轴飞控原理