LeetCode力扣20.有效的括号:【python】给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。

有效的括号:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

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

示例 1:
输入: “()[]{}”
输出: true

示例 2:
输入: “([)]”
输出: false

示例 3:
输入: “{[]}”
输出: true

方法一:利用replace成对删除

def isValid(s):
    len_s=len(s)
    if len_s%2 != 0:
        return False
    if len_s==0:
        return True
    for i in range(0,int(len_s/2)):
        s = s.replace('()', "").replace('[]', "").replace('{}', "")
    if len(s)>0:
        return False
    else:
        return True

方法二:利用栈的思想

def isValid2(s):
    len_s = len(s)
    if len_s % 2 != 0:
        return False
    if len_s == 0:
        return True
    str_dict = {'(': ')', '[': ']', '{': '}'}
    stacked = []
    for i in range(len_s):
            # 判断栈是否为空,以及栈的最后一个元素是否存在于字典的关键字之中
            # 判断字符串中的下一个字符是否与栈中存储的最后一个元素相匹配,匹配则删除栈中的最后一个元素
            # 不匹配则存入栈之中,用于接下来的判断
        if stacked and stacked[-1] in str_dict.keys() and s[i] == str_dict[stacked[-1]]:
            stacked.pop()
        else:
            stacked.append(s[i])
        print(stacked)
    if stacked == []:
            return True
    else:
            return False

菜鸟一只,感激路过的大佬们指正补充~

有空关注下个人公众号 麋鹿愿 呗,啾咪


版权声明:本文为ZZRUSER原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。