洗碗工 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'`)`