- 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
题目链接:https://leetcode.com/problems/valid-parentheses/
数据结构里面的题,就是利用栈对比求解,python结合list列表即可。
解题思路:若括号字符串长度为奇数肯定无效。为偶数时分两种情况,示例 2 "()[]{}"型的,相邻的为一组有效括号,示例 5"{[]}"型的,首尾的一组为有效括号。
class Solution:
def isValid(self, s: str) -> bool:
temp = []
l = len(s)
if l % 2 == 1: # 长度为奇数直接返回False
return False
i = 0
while i < l:
if len(temp)>0: # 为示例5型的出栈对比
s1 = temp.pop()
if not self.valid(s1,s[i]):
temp.append(s1)
temp.append(s[i])
i += 1
else: # 为示例2型的相邻两两对比
if not self.valid(s[i], s[i+1]):
temp.append(s[i])
temp.append(s[i+1])
i += 2
return len(temp) == 0
def valid(self, s1, s2):
if s1 == '(':
return s2 == ')'
elif s1 == '[':
return s2 == ']'
elif s1 == '{':
return s2 == '}'
else:
return False
网友评论