我努力了
STDIN.gets.chomp.split(" ")
然后将数组中的每个元素转换为整数。
但我相信应该有更好的解决方案。
假设整数不能为负:
nums = gets.scan(/\d+/).map(&:to_i)
或者对于任意输入:
nums = gets.strip.split(/\s+/).map(&:to_i)
这里的关键是使用 usingArray#map
为数组中的每个值调用一个块,为每个值创建一个新的结果数组。然后我们使用Symbol#to_proc
(由 Ruby 的 & 语法调用)简洁地调用to_i
每个字符串的方法。
例如,foo.map(&:to_i)
等价于foo.map{ |o| o.to_i }
。
编辑:将数组映射到位会稍微快一些,如果您知道这是唯一的分隔符,并且只在一个空格上拆分,并且不使用 Symbol#to_proc:
nums = gets.chomp.split(' ').map!{ |o| o.to_i }
但是,您在这里看到的只是非常微小的改进。你确定你需要这个更快吗?你的数据是什么,你的分析结果是什么表明这是你需要更快速度的关键地方?