我正在尝试编写一个方法,该方法将一个字符串数组作为其参数,并返回array.reverse而不实际使用reverse(使用Ruby)。我的大部分尝试都导致向阵列添加nils。我无法跟踪此算法。你有解决方案吗?
答案 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
我们只是弹出数组的最后一个元素并将其推入一个新数组,直到我们使用数组的所有元素完成。