Ruby - 反向数组算法

时间:2015-06-24 03:06:58

标签: arrays ruby algorithm reverse

我正在尝试编写一个方法,该方法将一个字符串数组作为其参数,并返回array.reverse而不实际使用reverse(使用Ruby)。我的大部分尝试都导致向阵列添加nils。我无法跟踪此算法。你有解决方案吗?

3 个答案:

答案 0 :(得分:2)

许多方法可以做到这一点。这是一个:

a = (1..10).to_a
  #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

b = a.dup
a.size.times.with_object([]) { |_,c| c << b.pop }
  #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 

答案 1 :(得分:1)

def reverse a; a.inject([], :unshift) end

reverse(["a", "b", "c"]) # => ["c", "b", "a"]

答案 2 :(得分:0)

一种非常简单的方法如下:

def reverser(array)
  reversed = Array.new
  array.length.times { reversed << array.pop }
  reversed
end

我们只是弹出数组的最后一个元素并将其推入一个新数组,直到我们使用数组的所有元素完成。