0
点赞
收藏
分享

微信扫一扫

有效的括号 两种解法(Python)


暴力替换 时间复杂度 O(N^2)

class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 == 1:
return False
while True:
startLen = len(s)
s = s.replace('[]','')
s = s.replace('{}','')
s = s.replace('()','')
# 替换后和替换前长度相同 要么没有括号对 要么是空字符串
if len(s) == startLen:
return s == ''

利用栈 时间复杂度 O(N)

class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 == 1:
return False
# 加一个 ? 来规避栈为空的情况
dic = {'(':')', '[':']', '{':'}', '?':'?'}
stack = ['?']
for char in s:
if char in dic:
stack.append(char)
elif dic[stack.pop()] != char:
return False
return len(stack) == 1



举报

相关推荐

0 条评论