我实现了对字谜进行分组的功能。
简而言之:

输入:[“汽车”,“用于”,“土 bean ”,“赛车”,“四个”,“疤痕”,“奶油”,“尖叫”]]

输出:[[“汽车”,“赛车”,“疤痕”],[“四个”],[“用于”],[“土 bean ”],[“奶油”,“尖叫”]]

我想知道是否有更好的方法可以做到这一点。
我真的认为我使用了太多重复语句:untilselectdelete_if
有什么方法可以组合selectdelete_if语句?那
意味着,可以自动删除所选项目吗?

代码:

def group_anagrams(words)
  array = []
  until words.empty?
    word = words.first
    array.push( words.select { |match| word.downcase.chars.sort.join.eql?(match.downcase.chars.sort.join ) } )
    words.delete_if { |match| word.downcase.chars.sort.join.eql?(match.downcase.chars.sort.join ) }
  end
  array
end

提前致谢,

最佳答案

像那样:

 a = ['cars', 'for', 'potatoes', 'racs', 'four','scar', 'creams', 'scream']
 a.group_by { |element| element.downcase.chars.sort }.values

输出为:
[["cars", "racs", "scar"], ["for"], ["potatoes"], ["four"], ["creams", "scream"]]

如果您愿意,可以将这种单线转换为一种方法。

10-06 09:22