【Python数据结构与算法】栈----合法出栈序列
【摘要】 题目:合法出栈序列描述给定一个由大小写字母和数字构成的,没有重复字符的长度不超过62的字符串x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。要求左边的字符一定比右边的字符先入栈,出栈顺序无要求。再给定若干字符串,对每个字符串,判断其是否是可能的x中的字符的出栈序列。输入第一行是原始字符串x后面有若干行(不超过50行),每行一个字符串,所有字符串长度不超过100输出对除第一行以外的每...
题目:合法出栈序列
描述
给定一个由大小写字母和数字构成的,没有重复字符的长度不超过62的字符串x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。
要求左边的字符一定比右边的字符先入栈,出栈顺序无要求。
再给定若干字符串,对每个字符串,判断其是否是可能的x中的字符的出栈序列。
输入
第一行是原始字符串x
后面有若干行(不超过50行),每行一个字符串,所有字符串长度不超过100
输出
对除第一行以外的每个字符串,判断其是否是可能的出栈序列。如果是,输出"YES",否则,输出"NO"
样例输入
abc
abc
bca
cab
样例输出
YES
YES
NO
AC代码
def isPopSeq(s1,s2):
stack = []
if len(s1) != len(s2):
return False
else:
L = len(s1)
stack.append(s1[0])
p1,p2 = 1,0
while p1 < L:
if len(stack) > 0 and stack[-1] == s2[p2]:
stack.pop()
p2 += 1
else:
stack.append(s1[p1])
p1 += 1
return "".join(stack[::-1]) == s2[p2:]
s1 = input()
while True:
try:
s2 = input()
except:
break
if isPopSeq(s1,s2):
print("YES")
else:
print("NO")
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)