微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"]]

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐