合法出栈序列

该博客主要探讨了一种字符串处理问题,涉及将字符串中的字符依次压入栈中,然后按照特定条件弹出。给定一个不超过8个字符的字符串x,对于多个测试序列,判断它们是否可能是x的合法出栈序列。程序通过模拟栈操作进行验证,输出‘YES’表示匹配成功,‘NO’表示失败。示例输入和输出展示了如何验证字符串如'abc'、'bca'等的出栈序列。
摘要由CSDN通过智能技术生成

描述

给定一个由不同小写字母构成的长度不超过8的字符串x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。

要求左边的字符一定比右边的字符先入栈,出栈顺序无要求。

再给定若干字符串,对每个字符串,判断其是否是可能的x中的字符的出栈序列。

输入

第一行是原始字符串x
后面有若干行,每行一个字符串

输出

对除第一行以外的每个字符串,判断其是否是可能的出栈序列。如果是,输出"YES",否则,输出"NO"

样例输入

abc
abc
bca
cab

样例输出

YES
YES
NO

# endcoding : UTF-8
"""
@author = 寻找任大侠
@email = renjx@stu.pku.edu.cn
@create_time = 2022/3/13 2:14
"""
import sys

list_1 = list(input())

# print(list_1)
for line in sys.stdin:
    list_2 = list(line)
    index = 0
    stack = []  # 模拟入栈出栈过程
    for i in list_1:  # 遍历每个入栈元素
        stack.append(i)  # 入栈
        while len(stack) > 0 and stack[-1] == list_2[index]:  # 判者栈顶元素和比对的队列首部是否相同
            stack.pop()  # 相同就弹栈,一直弹到不同为止
            index += 1
    if len(stack) == 0:
        print("YES")  # 栈为空则YES,否则匹配失败NO
    else:
        print("NO")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight_Ren

资源不易,打赏随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值