我已经解决了一个问题,要求你编写一个方法来确定所提供的数组中的字是字谜,并将字谜分组到输出中的子数组中.
我已经使用看似典型的方式来解决它,通过对单词进行排序并将它们分组为基于排序字符的哈希.
当我最初开始寻找一种方法时,我注意到String#sum存在将每个角色的序数加在一起.
我想尝试一些方法来确定一个基于使用的字谜sum.例如,"汽车"和"疤痕"是字谜,它们sum是425.
给定%w[cars scar for four creams scream racs]输出的预期输出(我已经使用哈希解决方案得到)是:[[cars, scar, racs],[for],[four],[creams,scream]].
看起来好像做了这样的事情:
input.each_with_object(Hash.new []) do |word, hash|
hash[word.sum] += [word]
end
Run Code Online (Sandbox Code Playgroud)
是一种方法,它给你一个哈希,其中键"425"的值是['cars','racs','scar'].我认为我缺少的是将其转换为预期的输出格式.
And*_*man 17
不幸的是,我不认为这String#sum是解决这个问题的有力方法.
考虑:
"zaa".sum # => 316
"yab".sum # => 316
Run Code Online (Sandbox Code Playgroud)
相同的总和,但不是字谜.
相反,如何按字符的排序顺序对它们进行分组?
words = %w[cars scar for four creams scream racs]
anagrams = words.group_by { |word| word.chars.sort }.values
# => [["cars", "scar", "racs"], ["for"], ["four"], ["creams", "scream"]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6401 次 |
| 最近记录: |