文章目录:
题目
脚本一
脚本一逻辑
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串, 判断字符串是否有效.
有效字符串需满足:
左括号必须用相同类型的右括号闭合.
左括号必须以正确的顺序闭合.
注意空字符串可被认为是有效字符串.
示例 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)
脚本一逻辑:
确实惭愧, 此题是笔者想了两天时间才想到这种处理逻辑
此题的主要逻辑是:
有效括号势必有这样的规律: 字符串从左往右开始数起, 第一个右括号比如 "]""}"")", 它的左边必定为相匹配的左括号;
基于如上的原则, 只需要将符合此原则的括号从原字符串中去除
为了去除方便, 可将字符串转换为列表的方式
若遇到不符合此规律的, 则不是有效的括号
来源: http://www.bubuko.com/infodetail-3330509.html