使用Python栈结构反转单词顺序时输出单个字符如何解决?
问题根源
- 直接迭代字符串得到的是单个字符而非完整单词:你当前写的
for word in mystring是遍历字符串的每一个字符,压入栈的都是单个字母,弹出打印时自然只会输出单个字符 - 打印逻辑适配问题:Python3中
print()函数默认会在输出内容末尾追加换行符,你写的逗号是Python2的同行输出语法,在Python3中不生效
修复方案
先把原字符串按空格分割为单词列表,再将完整单词压入栈;弹出时直接拼接为完整字符串或者控制打印的结尾符,保证所有单词在同一行输出。
修改后的调用代码
import Stack def reverseStr(mystring): s=Stack.Stack() # 先拆分出单词列表再压栈 for word in mystring.split(): s.push(word) res = [] while not s.isEmpty(): res.append(s.pop()) # 拼接为完整字符串后打印 print(' '.join(res)) def main(): mystring = "my name is jon doe" reverseStr(mystring) main()
运行输出
doe jon is name my
内容的提问来源于stack exchange,提问作者The Comedian
相关产品推荐
相关产品推荐

