不知道我做错了什么,但我似乎是得到它可悲的错误。
问题是,你得到了一串以空格分隔的数字,你必须返回最大和最小的数字。
注意:所有数字都是有效的Int32,不需要验证它们。输入字符串中总是至少有一个数字。输出字符串必须是由一个空格分隔的两个数字,最大的数字在前面。
def high_and_low(numbers)
# numbers contains a string of space seperated numbers
#return the highest and lowest number
numbers.minmax { |a, b| a.length <=> b.length }
end
输出量:
`high_and_low': undefined method `minmax' for "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6":String
5条答案
按热度按时间k7fdbhmy1#
minmax
没有为字符串实现。您需要先将字符串拆分为数组。但请注意,split
将返回字符串数组,而不是数字,您需要在下一步中将字符串转换为整数(to_i
)。因为
minmax
返回的值的顺序与要求的顺序相反,所以需要用reverse
旋转数组,然后只用join
旋转那些带有空格的数字,以获得最终结果。qxgroojn2#
怎么样:
如果你从一串数字开始,你可能需要在调用之后转换
.to_i
来拆分。在这种情况下:
vngu2lb83#
当你从一个字符串开始时,你必须把它转换成一个数组,在它上面转换
minmax
。否则您将比较码位而不是数值。iszxjhcz4#
不需要将字符串转换为数组。
第一个
Demo
它使用String#gsub的形式,只有一个参数,没有块,所以它返回一个枚举数,我已经将它链接到Enumerable#reduce(a.k.a.
inject
)。因此,gsub
只生成正则表达式/-?\d+/
的匹配项,不执行任何替换。8mmmxcuj5#
我对这个形的解决方法
关于方法的一些文档:第一个
关于Symbol#to_proc的更多信息
numbers.split.map(&:to_i)
与number.split.map { |p| p.to_i }
相同但是“minmax_by(&:to_i)”看起来更好,我肯定地猜。