洗碗工问题 栈的一个小例子

洗碗工 Python栈的一个小例子

前言

Python栈的一个小例子
在学习python的数据结构与算法时,在栈这一章节有一道洗碗工的问题,很有意思,有一定的难度,在csdn上找到的好几个代码中很多都考虑的不太全面,所以我将b站陈斌老师的作业讲解的代码稍加修改


代码如下:
.先需要手写一个.py的栈的class:

class Stack:

    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self,item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

二.模拟洗碗工洗碗过程,从而判断是否为正确出栈序列

from Stack import Stack
st = Stack()
s = input()
n = 0
i = 0
s_list=[0,1,2,3,4,5,6,7,8,9]
while i < 10 and n <= 10:
    k = int(s[i])
    if n <= k:
        for m in range(n, k+1):
            st.push(m)
        n = k+1

    while not st.isEmpty() and st.peek() == int(s[i]):
        m = st.pop()
        s_list[k] = None
        i += 1
    if n - k > 2 and s_list[k]+1 != None:
        break

if st.isEmpty():
    print('YES')
else:
    print('NO'`)`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值