我實現了一個函數來組合字母。 簡而言之:紅寶石方式在字符串數組中組合字符集
輸入:[ '汽車', '爲', '土豆', 'RACS', '4', '疤痕', '膏',尖叫']
輸出:[ [「car」,「racs」,「scar」],[「four」],[「for」],[「potatoes」],[「creams」,「scream」]]
我想知道是否有更好的方法來做到這一點。 我真的覺得我用了太多的重複陳述:until
,select
, 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
由於提前,
[Ruby Anagram Using String#sum]可能的重複(http://stackoverflow.com/questions/9517745/ruby-anagram-using-stringsum) – 2012-03-10 15:59:55