LeetCode 20 有效的括号

在Python中堆栈和队列可以用list列表来实现:

     队列:FIFO: list.append()    list.pop(0)

     堆栈:FILO:    list.append()    list.pop(-1)

  最后是我今天突然想到的,现在我感觉堆栈是一种概念一种工具,在不同的语言中可能有不同的叫法和实现方法,不一定在所有的语言中都叫Stack。

在写这道题的过程中还出现了一个问题:

   ValueError: invalid literal for int() with base 10:xxx   出现这种错误的原因是我用强制数据转换int()来转换了字符,就会出现错误。  Python中没有char只有str,但int()只能转化由纯数字组成的字符串!!!!!

class Solution:
    def isValid(self, s: str) -> bool:
        stk=list()
        hash_map={')':'(','}':'{',']':'['}
        for i in range(len(s)):
            if s[i] not in hash_map: # s[i]不在hash_map中说明是左半边的括号,左半边的括号始终是没有错误的。
                stk.append(s[i])
            else:
                if not stk or hash_map[s[i]] != stk.pop():
                    return False
        return not stk    
本来自己写的只超过了16-17%的代码,哭了。  看到还可以用字典来设置,牛皮!!
class Solution:
    import re
    def isValid(self, s: str) -> bool:
        stk=list()
        for i in range(len(s)):
            if s[i] == '(' or s[i] == '{' or s[i] == '[' :
                stk.append(s[i])
            else:
                if (len(stk)==0):
                    return False
                last=len(stk)-1
                if (stk[last] == '(' and s[i] == ')') or (stk[last] == '[' and s[i] == ']') or (stk[last] == '{' and s[i] == '}'):
                    stk.pop(-1)
                else:    
                    return False    
        if len(stk) == 0:
            return True
        return False
这是我最初自己写的代码,冗余比较大,if判断语句很多,low了不少。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值