我试图按空格分割一个句子,将其存储到任何数组中,然后将其打印为堆栈(向后)。
这是我的尝试:
sentence = "The quick fox "
stack = sentence.split
print stack.pop until stack.empty? # => fox quick The
这对我来说看起来有点奇怪,我不确定你们是否可以向我推荐一个更好的解决方案?谢谢。
怎么样:
"The quick fox ".split.reverse.join(" ")
在每个单词后添加一个空格:
sentence = "The quick fox "
stack = sentence.split
until stack.empty?
print stack.pop
print ' ' unless stack.empty?
end
# => fox quick the
s = "The quick fox "
stack = s.split
until stack.empty? do stack.shift end
shift
, 而不是pop
你要找的。
附加智慧:就像pop
有一个对应的push
,shift
有一个对应的unshift
。
stack = "The quick fox ".split
stack.size.times{ puts stack.pop }
但我更喜欢 OP 的pop until empty?
语法
print *"The quick fox ".strip.split.reverse.map{|w| " #{w}"}
但是您对堆栈和打印它们的要求是相互矛盾的。当你有一个列表时,Ruby 的标准输出方式(除了检查)是在不同的行上输出每个项目,如下所示:
puts "The quick fox ".strip.split.reverse