栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

一个洗碗工一天要洗3000个碗(洗碗工自述)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一个洗碗工一天要洗3000个碗(洗碗工自述)

洗碗工 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'`)`
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号