1、有效的括号(10分)
题目内容:
给定一个只包括
-
'(',')','{','}','[',']'
的字符串,判断字符串是否有效。
有效字符串需满足:
-
左括号必须用相同类型的右括号闭合。
-
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
输入格式:
一行字符串
输出格式:
True或False,表示该输入是否为合法括号串
输入样例1:
-
([])
输出样例1:
-
True
输入样例2:
-
{{)]}
输出样例2:
-
False
inp = input()
if not inp:
print(True)
else:
s = []
d = {
')': '(',
']': '[',
'}': '{'
}
flag = True
for i in inp:
if i in d.values():
s.append(i)
elif i in d.keys() and s:
if s.pop() != d[i]:
flag = False
break
else:
flag=False
break
if s:
flag=False
print(flag)
2、一维开心消消乐(10分)
题目内容:
开心消消乐我们都熟悉,我们可以用刚学过的栈来做一个“一维”的开心消消乐游戏,这个游戏输入一串字符,逐个消去相邻的相同字符对。
如果字符全部被消完,则输出不带引号的“None”
输入格式:
一个字符串,可能带有相邻的相同字符,如“aabbbc”
输出格式:
一个字符串,消去了相邻的成对字符,如“bc”
输入样例1:
- beepooxxxyz
输出样例1:
- bpxyz
输入样例2:
- kxkx
输出样例2:
- kxkx
输入样例3:(这里bb被消了以后,第二个a挨上来了,所以两个a也相邻,同样消去)
- abbacddccc00
输出样例3:
- None
inp=input()
i=0
l=[]
for i in inp:
if l==[]:
l.append(i)
else:
if i==l[-1]:
l.pop()
else:
l.append(i)
if l:
print("".join(l))
else:
print(None)
3、强迫症老板和他的洗碗工(10分)
题目内容:
洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。
小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。
老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不是遵照命令按照0123456789的次序来洗盘子了。
你也能像老王一样作出准确的判断吗?
输入格式:
长度为10的字符串,其中只包含0~9的数字,且不重复,代表顾客依次取到的盘子编号
输出格式:
字符串:Yes或者No,表示遵照次序洗盘子,或者没有遵照次序洗盘子
输入样例1:
- 1043257689
输出样例1:
- Yes
输入样例2:
- 4230178956
输出样例2:
- No
s=input()
stack = []
i = 0
j = 0
while i <= 10 and j <= 9:
if stack and int(s[j]) == stack[-1]:
stack.pop()
j += 1
else:
stack.append(i)
i +=1
if not stack:
print('Yes')
else:
print('No')