测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A46342. 合法出栈序列给定一个由不同小写字母构成的长度不超过8的字符串x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。要求左边的字符一定比右边的字符先入栈,出栈顺序无要求。再给定若干字符串,对每个字符串,判断其是否是可能的x中的字符的出栈序列。输入第一行是原始字符串x 后面有若干行,每行一个字符串输出对除第一行以外的每个字符串,判断其是否是可能的出栈序列。如果是,输出"YES",否则,输出"NO"…

填空题 困难
知识点

题目描述

合法出栈序列

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

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

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

输入

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

输出

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

样例输入

abc

abc

bca

cab

样例输出

YES

YES

NO

参考答案

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")
上一题 下一题