蓝桥杯入门刷题训练——栈

文章讲述了如何通过编程解决两个问题:利用列表和切片处理数字游戏,以及使用栈实现表达式括号的匹配。通过Python代码展示了这两种方法的实现过程。
摘要由CSDN通过智能技术生成

题目一:小鱼的数字游戏

解题思路:

数据存入列表中,再利用切片按照要求输出即可。

也可以利用栈的性质先进后出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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值