【Python数据结构与算法】栈----合法出栈序列

举报
是Dream呀 发表于 2024/08/28 22:26:38 2024/08/28
【摘要】 题目:合法出栈序列描述给定一个由大小写字母和数字构成的,没有重复字符的长度不超过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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。