文章目录:
- 题目
- 脚本一
- 脚本一逻辑
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
脚本一:【用时:32ms】
class Solution: def isValid(self, s: str) -> bool: zidian1 = {')':'(',']':'[','}':'{'} lists = list(s) flag = 'bb' i = 0 while lists: try: lists[i] except IndexError: return(False) num1 = len(lists) if lists[i] in zidian1: if lists[i-1] and lists[i-1] == zidian1[lists[i]]: del lists[i] del lists[i-1] i -= 1 else: return(False) flag = 'xx' else: i += 1 if i >= num1: flag = 'xx' return(False) if flag == 'bb': return(True)
脚本一逻辑:
- 确实惭愧,此题是笔者想了两天时间才想到这种处理逻辑
- 此题的主要逻辑是:
- 有效括号势必有这样的规律:字符串从左往右开始数起,第一个右括号比如"]""}"")",它的左边必定为相匹配的左括号;
- 基于如上的原则,只需要将符合此原则的括号从原字符串中去除
- 为了去除方便,可将字符串转换为列表的方式
- 若遇到不符合此规律的,则不是有效的括号