返回仅包含最长字符串的数组

时间:2016-06-04 14:20:45

标签: ruby

我需要在所有3个测试中都有效。我需要迭代代码,直到数组只返回最长的代码。

# Tests
p longest(['tres', 'pez', 'alerta', 'cuatro', 'tesla', 'tropas', 'siete']) == ["alerta", "cuatro", "tropas"]
p longest(['gato', 'perro', 'elefante', 'jirafa']) == ["elefante"]
p longest(['verde', 'rojo', 'negro', 'morado']) == ["morado"]

1 个答案:

答案 0 :(得分:2)

好的,让我们把它分解......

首先:找出最长的单词有多长:

words = ['tres', 'pez', 'alerta', 'cuatro', 'tesla', 'tropas', 'siete']
words.map(&:length).max
#=> 6

其次选择具有该长度的所有单词:

words.select { |w| w.length == 6 }
#=> ["alerta", "cuatro", "tropas"]

将其与方法相结合:

def longest(words)
  max_length = words.map(&:length).max
  words.select { |w| w.length == max_length }
end