我实现了一个对字谜进行分组的功能。
简而言之:
输入:['汽车'、'for'、'土豆'、'racs'、'四'、'疤痕'、'奶油'、尖叫']
输出:[[“汽车”、“赛车”、“疤痕”]、[“四”]、[“for”]、[“土豆”]、[“奶油”、“尖叫”]]
我想知道是否有更好的方法来做到这一点。
我真的认为我使用了太多的重复语句:until
, select
,
delete_if
。
有没有什么办法可以结合起来select
and delete_if
陈述?那
意思是,选中的项目可以自动删除吗?
Code:
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"]]
当然,如果您愿意,您可以将这句话变成一种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)