如何在多维数组中找到最长的字符串?

Ism*_*hul 3 ruby arrays sorting multidimensional-array

我试图从多维数组中获取最长的字符串,但由于某种原因它不起作用.

这就是我所拥有的:

a = 
["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], 
["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"]]

p a.max_by{|v|v}[0]  # => "MTYSTAKEGAYPFRNFN"
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道我做错了什么吗?

Зел*_*ный 7

=> a.flatten.max_by(&:size)
=> # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 5

a = [
    ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
    ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
    ["MTYINLGVTRTGDLMIGRHRP"],
    ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"],
    ["MAACGLGRVFSAFKVDEMD"],
    ["MPSGFVGKRSGFCQFCCSHI"],
    ["MTYSTAKEGAYPFRNFN"]
]
p a.max_by { |v| v[0].size }[0]
Run Code Online (Sandbox Code Playgroud)

输出:

"MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
Run Code Online (Sandbox Code Playgroud)

简单地指定v,对每个元素(单元素数组)进行比较.它们按字典顺序进行比较.