每天一道算法题

#1.给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否匹配。

* 有效字符串需满足:

* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* 注意空字符串可被认为是有效字符串。

思路:## 正确思路:
* 不需要考虑输入内容是否合法,这只是做题,不是工程
* 定义一个字典,后括号为键,前半部分为值
* 定义一个元素保存栈顶,注意这个设置,取栈顶的操作
* 用栈的思想,如果是字典里的值,进入栈,否则,判断栈顶元素是否和这个元素匹配若匹配就弹出,不匹配就报False
* 依次执行上两步

class Qj(object):
    
    def Kuohaopipei(s):
        
        stack = []
        maping = {')':'(',']':'[','}':'{'}
        
        for C in s:
            
            if C in maping:
                # 从堆栈中弹出最上面的元素(如果它不是空的)否则,将伪值“#”赋给top_element变量
                
                Top_element = stack.pop() if stack else '#'
                
                if maping[C] != Top_element:
                    return False
                
            else:
                stack.append(C)
                
        return not stack
if __name__ == '__main__':
    s = input('给定只包括括号的字符串,判断字符串是否匹配')
    print(Qj.Kuohaopipei(s))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值