如何在Ruby中将单词数组排序为字谜数组?
Posted
技术标签:
【中文标题】如何在Ruby中将单词数组排序为字谜数组?【英文标题】:How to sort array of words into arrays of anagrams in Ruby? 【发布时间】:2013-03-29 03:22:36 【问题描述】:http://spark-university.s3.amazonaws.com/berkeley-saas/homework/hw1.pdf
尝试完成此作业的第 3 部分。下面的代码好像不行,即对于参数['HeLLo', 'hello']
,返回[["hello"], ["HeLLo"]]
而不是[["HeLLo", "hello"]]
def combine_anagrams(words)
#iterate through words, make hashmap with the sorted version
hash =
words.each do |x|
hash[x.chars.sort.join.downcase.gsub /\W/, ""] = []
end
#iterate through words, access hashmap and append curr to array
words.each do |x|
hash[x.chars.sort.join.downcase.gsub /\W/, ""] << x
end
hash.values #return array of values
end
任何帮助将不胜感激。 (我是 Ruby 新手)
【问题讨论】:
给我们输入字符串和预期的输出。 前几天有人问过这个问题,搜索一下。另外,如果你想分组,也许group_by
方法是你应该看的。
试试这个hash.values.flatten(1).reverse.each_cons(2) |x| p [x]
重复:***.com/questions/9646995/ruby-way-to-do-this
【参考方案1】:
您可以像这样轻松地做到这一点:
def combine_anagrams(words)
anagrams=
words.each do |word|
anagrams[word.downcase.split('').sort.join] ||=[]
anagrams[word.downcase.split('').sort.join] << word
end
anagrams.values
end
【讨论】:
检查重复的问题以查看更好的方法:***.com/questions/9646995/ruby-way-to-do-this +1,只是在寻找 group_by 选项来纠正我的自我 :) 我要把这个留在这里,我不想复制其他人的代码,尽管我确实想用 @987654323 做点什么@。寻找更好选择的每个人都可以查看@toklands 链接。 thnx @tokland以上是关于如何在Ruby中将单词数组排序为字谜数组?的主要内容,如果未能解决你的问题,请参考以下文章