合法出栈序列

  • Post author:
  • Post category:其他


描述

给定一个由不同小写字母构成的长度不超过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")



版权声明:本文为Knight_Ren原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。