如何在多维数组中找到最长的字符串?
我试图从多维数组中获取最长的字符串,但由于某种原因它不起作用。
这就是我所拥有的:
a = ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"]] p a.max_by{|v|v}[0] # => "MTYSTAKEGAYPFRNFN"
有人可以让我知道我做错了什么吗?
=> a.flatten.max_by(&:size) => # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
a = [ ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] p a.max_by { |v| v[0].size }[0]
输出:
"MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
只需指定v
,就可以对每个元素(单元素数组)进行比较。 它们按字典顺序进行比较。
这应该工作:
a.max_by { |v| v.first.size }[0]
=> a = [["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] => a.flatten.sort_by(&:length).last #=> "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"