Tôi đã thực hiện một hàm để nhóm đảo chữ cái. Tóm lại:Cách Ruby để nhóm đảo chữ cái trong mảng chuỗi
đầu vào: [ 'xe', 'cho', 'khoai tây', 'RACS', 'bốn', 'vết sẹo', 'kem', hét lên ']
đầu ra: [ ["xe hơi", "rac", "vết sẹo"], ["bốn"], ["cho"], ["khoai tây"], ["kem", "hét"]]
Tôi muốn biết nếu có một cách tốt hơn để làm điều này. Tôi thực sự nghĩ rằng tôi đã sử dụng quá nhiều câu nói lặp lại: until
, select
, delete_if
. Có cách nào để kết hợp câu hỏi select
và delete_if
không? Điều đó có nghĩa là, các mục đã chọn có thể tự động bị xóa không?
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
Cảm ơn trước,
có thể trùng lặp của [Ruby Anagram Using String # sum] (http://stackoverflow.com/questions/9517745/ruby-anagram-using-stringsum) –