方法输入: ["eat","tea","tan","ate","nat","bat"]

我通过此方法将每个字形组合到数组中各自的数组中,然后按组大小对数组进行排序:

def group_anagrams(a)
    a.group_by { |stringElement| stringElement.chars.sort }.values.sort_by(&:size)
end

我正在努力弄清楚如何按字母顺序对数组中的结果数组进行排序,因为正如您所看到的,在数组的中间元素中,nat应该在tan之前:

[["bat"], ["tan", "nat"], ["eat", "tea", "ate"]]

使用最终解决方案进行更新:

def group_anagrams(a)
    a.group_by { |stringElement| stringElement.chars.sort }.values.map(&:sort).sort_by(&:size)
end

推荐答案

您需要映射此数组并进行排序(map(&:sort))

def group_anagrams(ary)
  ary.group_by { |s| s.chars.sort }.values.map(&:sort)
end
ary = ["eat", "tea", "tan", "ate", "nat", "bat"]
group_anagrams(ary)
# => [["ate", "eat", "tea"], ["nat", "tan"], ["bat"]]

Ruby相关问答推荐

我可以在Ruby中以散列的形式访问方法的关键字参数吗?

无法解析音频文件 track1.m4a

Ruby 中的 Hash[key] 返回 nil 但 hash 没有 nil 值

Rack::Request - 如何获取所有标头?

如何使 Sinatra 通过 HTTPS/SSL 工作?

如何使用 RSpec 忽略或跳过测试方法?

ruby:对两个或多个数组的对应成员求和

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

如何在 linux (ubuntu) 上更新 ruby​​?

如果尚未定义,则设置 Ruby 变量

Rake 与 Thor 的自动化脚本?

在 ruby​​ 中将每个数组元素添加到文件的行中

git,Heroku:预接收挂钩被拒绝

如何在数组中找到出现次数最多的项目

是什么让 Ruby 变慢了?

为什么显式返回会对 Proc 产生影响?

Ruby 将 CSV 文件读取为 UTF-8 和/或将 ASCII-8Bit 编码转换为 UTF-8

如何从Ruby中的哈希表中获取第一个键值对

解析带有标题字段的 CSV 文件作为每行的属性

如何在 IRB 中重新加载脚本?