题目一:小鱼的数字游戏
解题思路:
数据存入列表中,再利用切片按照要求输出即可。
也可以利用栈的性质先进后出pop()出栈。
AC代码:
a = list(map(int, input().split()))
for i in range(len(a)-2, -1, -1):
print(a[i], end=" ")
题目二:表达式括号匹配
解题思路:
栈的典型题目,使用栈来检查表达式中的左右圆括号是否匹配。遍历表达式的每个字符,当遇到左圆括号时,将其压入栈中;当遇到右圆括号时,从栈中弹出一个字符,如果弹出的字符不是左圆括号,则说明括号不匹配;如果栈为空,说明右圆括号多于左圆括号。最后,如果栈为空,则说明所有的左圆括号都有匹配的右圆括号,括号匹配成功。
AC代码:
def check(expression):
stack = [] # 创建一个空栈
for char in expression:
if char == '(':
stack.append(char) # 遇到左圆括号,压入栈中
elif char == ')':
if not stack or stack.pop() != '(': # 栈为空或弹出的字符不是左圆括号
return "NO" # 括号不匹配
if not stack: # 栈为空,括号匹配成功
return "YES"
else:
return "NO" # 右圆括号多于左圆括号
expression = input() # 输入表达式
result = check(expression)
print(result)