这篇文章是对这个帖子的汇总,帖子里的答复都很有意思,真希望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等等花样百出。
分享到:
相关推荐
4字母域名字典是指由四个字母组成的域名集合。这种类型的域名因其简短易记、便于传播的特点而受到广泛关注与喜爱。在互联网领域,一个好的域名往往能够为网站带来更好的访问量和品牌形象。因此,4字母域名因其稀缺性...
在4x4的魔术字广场中,目标是找到一个正方形的布局,其中每一行、每一列以及两条对角线上的单词都由不同的字母组成,并且这些字母覆盖了字母表中的所有字母。这种问题通常需要良好的词汇量、空间想象能力和逻辑推理...
本篇内容将深入解析一份包含七位字母组成的常用单词列表,旨在为那些正在寻找理想域名的企业和个人提供灵感与帮助。 #### 二、关键词汇解释 1. **abactor**:源自拉丁语,意指“行动者”或“执行者”。在现代语境...
4. 跳过非字母字符,继续寻找下一个单词。 5. 重复步骤2-4,直到遍历完整个字符串。 6. 最后,将新字符串连接起来,得到结果。 以下是一个简单的C语言函数实现: ```c #include #include #include void ...
音节是构成单词发音的基本单位,它由一个或多个字母组成,每个音节都有可能包含元音和辅音。 在英语中,音节分为三种主要类型:开音节、闭音节和半开音节。开音节是指以元音结尾的音节,例如"be"。闭音节则是以辅音...
教师应教授学生一些基本的语音规则,如相同字母组合的发音规律,帮助学生更好地拼读和拼写单词。例如,通过比较name, game, nice, take等单词,学生可以发现它们的发音模式。当学生遇到拼写错误,如eraser和areser...
- **定义**: 一种数据结构,用于存储相同类型的数据元素集合。 - **应用场景**: 存储一系列数值、字符串等数据类型,便于批量操作。 #### 13. Ascending (上升) - **定义**: 按照递增顺序排列数据。 - **应用场景**...
2. 抢答字母组:教师说出一个单词,学生需要快速组成该单词的字母,第一个正确拼出字母序列的学生获胜。 3. 看谁快:教师展示字母表的一部分,学生要尽快按照正确的顺序完成缺失的字母。这个游戏旨在训练学生的记忆...
(c) 同音素单词的探究:利用教材中的Listen and Repeat环节,让学生识别并对比含有相同音素的单词,如通过听读和图像来学习一组单词,然后编写句子,这样既练习了发音,也巩固了词汇。 探究式教学在小学英语课堂中...
所有单词具有相同的长度,并且只由小写字母组成。 例如: 输入:s = "wnbdc", wordDict = ["w", "n", "b", "d", "c"] 输出:true 解释:字符串s可以拆分成"wn", "b", "dc",这些单词都在wordDict中。 此题主要考察...
直接拼读法的基本原理是,英语是一种拼音文字,单词由字母组成,字母或字母组合决定了单词的发音。辅音字母有音形一致和不一致的读音,而元音字母的发音则受到音节类型(开音节和闭音节)的影响。 例如,开音节中的...
它们由一串字符组成,通常包括字母、数字和连接符,用于唯一地标识网络上的服务器或网站。本资源提供的是与“拼音”相关的域名列表,特别是针对中文的“单拼”和“双拼”域名。 “单拼”域名是指由一个汉语拼音组成...
通过在棋盘上摆放字母瓷砖,玩家需利用这些字母组成合法的英语单词来得分。这个过程不仅考验了玩家的词汇知识,还锻炼了他们的策略思考和空间规划能力。 游戏规则: 1. 字母瓷砖:每个玩家有一组随机的字母瓷砖,每...
当用户输入他们手头上拥有的字母时,程序会通过高效的算法遍历字典,找出所有可以用这些字母组成的合法单词。这个过程涉及到字符串操作、排列组合以及可能的后缀前缀检查,确保生成的单词符合游戏规则。 在Python中...
其中,`break-all` 表示无论何处都可以断开单词,而 `break-word` 则是在单词内部寻找合适的断点。 - **使用 `white-space` 属性**:设置 `white-space: pre-wrap;` 可以使浏览器保留空格和换行符,并且允许内容根据...
否则,可能返回到之前的状态,或者结束当前的单词符号并开始寻找下一个。 4. **标记生成**:当识别出一个完整的单词符号时,比如一个标识符,程序会生成一个对应的标记,并附上该单词符号的类型,如`ID`表示标识符...
5. **比较记忆法**:"elf"与"self"比较,少了字母"s",形象化地表示缺少头部的小精灵。 6. **幽默趣味法**:"giddy"谐音“给底”,想象轻佻的人喜欢展示裙底;"lisp"的分解为 "lip (嘴唇) + s (死)",暗示口齿不清...
这个网格由大小写英文字母组成,我们需要设计一个算法来判断是否可以从网格中的某个位置开始,沿着上下左右四个方向连续地找到给定单词的每个字符,且每次移动后字符的位置相邻。 首先,我们需要理解递归的概念。...
2. `article.match(/[A-z]+/g)`:这里使用了正则表达式`/[A-z]+/g`来匹配文章中的所有由26个英文字母组成的单词。`g`标志表示全局匹配,确保找到所有匹配项,而不仅仅是第一个。 3. `article = " "+array.join(" ")...
通过将单词拆分成可理解的部分进行记忆,例如"world",由"wor"(男人)和"ld"(old或age)组成,原本表示"男人的生命或年纪",进而引申为"世界"。这种分解和联想的方式有助于加深记忆。 学习英语词汇并非单纯的记忆...