要学习LIFO FIFO,我正在尝试制作一个反转字符串的方法
#!/usr/bin/env ruby
def reverse(string)
reverse = []
string.split.each do | char |
reverse.unshift(char)
end
puts reverse.join
end
reverse("Hello")
当我这样做时,控制台只返回“你好”。不应该不加速回归“olleH”?
,即对于每个字符,它按顺序排列并添加到反向数组的开头。
答案 0 :(得分:4)
split
没有按照你的想法行事(默认情况下,它会在空格上分割,而不是在每个字符上分割):
> "Hello".split
#=> ["Hello"]
您可能需要chars
:
> "Hello".chars
#=> ["H", "e", "l", "l", "o"]
您也可以使用each_char
方法:
string.each_char do |char|
答案 1 :(得分:2)
split
在空格上拆分,因此只会产生一个令牌Hello
。尝试使用Hello world
,您将获得world Hello
。
解决方案是将分隔符(在本例中为空字符串""
)传递给split
方法。
答案 2 :(得分:1)
这是因为你的string.split
没有将数组拆分成单个字符。将其更改为string.split('')
:
def reverse(string)
reverse = []
string.split('').each do | char |
reverse.unshift(char)
end
puts reverse.join
end
reverse("Hello")
# => olleH