这篇文章是对这个帖子的汇总,帖子里的答复都很有意思,真希望ITEye多一些这样的帖子,少一些浮躁和毫无意义的争论。
我把帖子汇总贴在下面:
Write a function that takes as input list of words and prints out groups of words with exactly the same letters, one group per line.
For example,
Given the list:
hat, top, potter, pot, pier, ripe
It would print:
hat
top, pot
potter,
pier, ripe
Since ‘pier’ and ‘ripe’ each have one p, i, e, and r they belong on the same line. Since no other word has the same 6 letters as ‘potter’ it belongs on a line by itself.
Note: The order of the lines does not matter. As long as all words that belong on the same line are grouped together the function is correct.
Please use the following function signature:
void PrintGroupsWithSameLetters(string[] words)
我首先想到的问题解决办法和二楼一样:
构造一个map,key为升序拍好的字母串,value就是出现的单词。
可是,这样多做了一件事。
对,就是给每个单词排序。这件事能否不做?
是不是可以参考霍夫特编码的方式?给每一个字母一个编码,让不同字母组合的编码和不相同?后面有同学有类似的思路,回答道:
每个字母对应一个素数, 然后把所有单词响应的素数相乘,然后把结果做比较,结果相同的,说明这个单词和另一个单词又相同的字母
当然了,素数乘积的办法遭到了驳斥:
不建议用素数乘积做,我之前也想过了这个问题。
比如说一个单词 ZZZZZZ = (101)..101> 2的6次方*..... >2的36次方
想想就知道,这超过了int 的32位。
还没完,之后又有同学有想到:
现根据字符串长度进行分组, 然后再对字符串进行排序。 大体为第一步:归类(长度相等的一类) 第二步:给每个分组中的字符串排序再归类。 呵呵,有点MapReduce的意思哦。
既然提到了映射和化简,那就有可以改进的地方,比如可以按照HashCode的特性来分类。后面还有用二进制数移位等等办法的讨论,实现代码也是Python、Java、Erlang、Groovy等等花样百出。
分享到:
相关推荐
查找含相同字母的单词(Java)
对读入的某个文本文件input.txt中,拆出英文单词,输出一个按字典顺序排列的单词表,结果输出在文本文件output.txt中,每个...约定单词仅由英文字母组成,单词间由非英文字母分隔,相同单词只输出一个,大小写不区分。
4个字母的英文单词大全,英语单词,单词汇总,4位英文
单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计单词字母频率统计
7个字母的单词(7个字母的英文单词全集)[收集].pdf
主要介绍了js使用正则子表达式匹配首字母与尾字母相同单词的方法,可实现将多行文本框中首位字母相同的单词进行匹配的功能,具有一定参考借鉴价值,需要的朋友可以参考下
借用了别人代码 // // 算法:排列组合类 // // 版权所有(C) Snowdust // 个人博客 http://blog.csdn.net/snowdust & http://snowdust.cnblogs.com
4个字母的英文单词大全,英语单词,单词汇总,4位英文
填写任意字母即可匹配出单词库中由这些字母组成的单词。 库中的单词可以按照相同的格式任意添加。 打开excel后会有提示框出现,选择使用宏即可。
易语言寻找字母和数字源码,寻找字母和数字
单词按首字母排序的两种方法,单词按首字母排序的两种方法,
行业文档-设计装置-由多个自由组合的英文字母组成单词的英语教具
c语言课程作业,(输入一个单词或者一组字符,输入要删除的字母,运行后会输出删除后剩下的字母)。
按字母个数记忆单词,方便中初级英语爱好者学习,本DEMO版本数据词库以国家英语四级为基础.
3个字母的英文单词大全~3字单词.doc
C# 根据首字母排序单词,还没有来得及做一个窗体,先用控制台的形式展现吧,觉得这个挺有用,首字母排序,也比较流行,希望C#爱好者好好参考一下。
4个字母的英文单词大全汇总.doc
对N(2≤N≤100000)个由M(2≤M≤1000)个小写字母组成的英文单词排序, 使得相邻的两个单词中前一个单词的末字母等于后一个单词的首字母。 【输入形式】 从标准输入上读入。输入文件有N(2≤N≤100000)行,每行...
二十六个字母及字母组合在单词中的发音 Aa /eI/ name plane Jane baby cake /l/ milk school tall / æ / bag dad hat map black back Mm /m/ monkey come tomato /α:/ after plant graph ask grasp glass fast ...