python中的堆栈、推送和弹出

2024-04-29 17:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

问题是编写一个函数来创建一个堆栈,将给定参数字符串中的字母推到堆栈上,并将它们弹出,如参数字符串中的'*'所示。表达式中的字母表示压入堆栈,星号表示弹出操作。函数名为modify_stack,它接受单个字符串作为参数并返回pop操作返回的值序列。使用print(modify_stack('EAS*Y*QUE***ST***IO*N***'))调用函数

我的代码:

def modify_stack(symbolString):
    stack=Stack()
    i=0
    for i in symbolString:
        if i != '*':
            stack.push(i)
        else:
            print(stack.pop())

正确的答案是'SYEUQTSAONIE',但我得到了不同的结果。请指出我错在哪里。


Tags: 函数字符串参数stack表达式堆栈字母序列
1条回答
网友
1楼 · 发布于 2024-04-29 17:04:16

使用正确的Stack实现,您的代码可以正常工作,并打印出预期的字符序列。

我认为您的问题只是结果打印在modify_stack()中,而不是作为函数返回值返回。这是通过函数应该被调用-print(modify_stack('EAS*Y*QUE***ST***IO*N***'))的方式提出的。显然,应该是来自modify_stack()的返回值。

只需更改函数以累积生成的字母序列的列表,然后将该序列作为字符串返回。。。像这样:

class Stack(list):
    push = list.append

def modify_stack(symbolString):
    stack=Stack()
    result = []
    for character in symbolString:
        if character != '*':
            stack.push(character)
        else:
            result.append(stack.pop())
    return ''.join(result)

现在,每当看到*时,每个弹出的字符都会添加到result列表的末尾。最后,使用join()result中的字符转换为字符串,并从函数返回

>>> print(modify_stack('EAS*Y*QUE***ST***IO*N***'))
SYEUQTSAONIE

相关问题 更多 >