加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:07:34 所属栏目:百科 来源:网络整理
导读:我实现了一个分组字谜的功能. 简而言之: 输入:[‘cars’,’for’,’potato’,’racs’,’four’,’scar’,’cream’,scream’] 输出:[[“cars”,“racs”,“scar”],[“four”],[“for”],[“potato”],[“cream”,“scream”]] 我想知道是否有更好的方法
我实现了一个分组字谜的功能.
简而言之:

输入:[‘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"]]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读