题目链接:https://leetcode.com/problems/valid-parentheses/
方法一 栈的方式
代码
class Solution:
def isValid(self, s: str) -> bool:
if not s or s==[] : return True
if len(s)&1 :return False
left={'{':'}','[':']','(':')'}
right={'}':'{',']':'[',')':'('}
a=[]
for i in s:
if i in left:
a.append(i)
else :
if not a or a.pop()!=right[i]:return False
return False if a else True
思路详解
- 为空,则符合
- 长度为奇数,不符合
- 左括号,放入栈里
右括号,从栈里弹出,看是否匹配,若不匹配,则不符合 - 遍历结束后,判断栈里是否为空,若不为空,说明有独立的左括号,不符合
方法二 字符串的方式
代码
class Solution:
def isValid(self, s: str) -> bool:
if not s : return True
l=len(s)
if l%2 != 0 :return False
k=0
while s and k<l//2:
s,k=s.replace('()','').replace('[]','').replace('{}',''),k+1
return False if s else True
思路详解
- 为空,则符合
- 长度为奇数,不符合
- 不断的用空字符串替换数组中的括号对,直至替换len(s)/2后字符串如果还不为空,说明不符合,若在迭代期间为空,说明符合。