自定义数据结构(栈、队列)-括号匹配

该题目考察字符串的括号匹配性,通过遍历输入的括号字符串,利用栈结构存储左括号,遇到右括号时尝试匹配。如果输入字符串为'([])',输出为'YES';若输入为')[](())',则输出为'NO'。此题主要涉及字符串处理和栈的应用。
摘要由CSDN通过智能技术生成

第二题 括号匹配
满足如下条件的字符串称为括号匹配的字符串: 1. 空字符串是括号匹配的字符串。 2. 若A是括号匹配的串,则(A)、[A]是括号匹配的字符串。 3. 若A、B是括号匹配的字符串,则AB也是括号匹配的字符串。 例如:()、[]、([])、()()都是括号匹配的字符串,而][、[(])则不是。 现在对于输入的字符串,判断它是否是括号匹配的字符串。

输入
一行,为一个仅由“(”、“)”、“[”、“]”组成的非空字符串。

输出
一行,“YES”或“NO”,分别表示输入的字符串括号匹配或不匹配。

输入样例1
([])
输出样例1
YES
输入样例2
())[]
输出样例2
NO

这道题主要是考察列表的实现,基本思路为当输入的是左括号的时候让其入列表,当输入的是右括号的时候与左括号进行匹配,如果可以匹配则为YES,不能则为NO

a=input()
b=[]
state=1#一个逻辑变量,进行判断
for i in a:
    if i == '(' or i == '[' or i == '{':
        b.append(i)
    if i == ')' or i == ']' or i == '}':
        if not b:#即如果b是空的,则逻辑变量为0,也就是无法匹配
            state=0
        else:
            bottom=b[len(b)-1]#和输入中最后一个左括号匹配
            if i == ')' and bottom == '(' or i == ']' and bottom == '[' or i == '}' and bottom == '{': 
                b.pop()#匹配完了就可以拜拜了
            else:
                state=0
if not b and state==1:
    print("YES")
else:
    print("NO")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值