ruby-on-rails – 用于在字符串数组中对字符串进行分组的Ruby方法

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 用于在字符串数组中对字符串进行分组的Ruby方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我实现了一个分组字谜的功能.
简而言之:

输入:[‘cars’,’for’,’potato’,’racs’,’four’,’scar’,’cream’,scream’]

输出:[[“cars”,“racs”,“scar”],[“four”],[“for”],[“potato”],[“cream”,“scream”]]

我想知道是否有更好的方法来做到这一点.
我真的认为我使用了太多的重复陈述:直到,选择,
delete_if.
有没有办法组合select和delete_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"]]

如果你愿意,你可以将这种单行程转变为一种方法.

猜你在找的Ruby相关文章