问题
解答
1.栈
从左到右依次遍历字符串s
,如果是左括号就放入栈stack
中,出现右括号就将其在哈希表对应的左括号与最后一次放入栈的字符比较,如出现不同则表示非有效字符串。遍历结束后若栈中元素清空,则该字符串为有效字符串。
时间复杂度:O(n)
class Solution(object):
def isValid(self, s: str) -> bool:
stack = []
Hashtable = {")": "(", "}": "{", "]": "["}
for char in s:
if char in Hashtable:
top_element = stack.pop() if stack else ' '
if Hashtable[char] != top_element:
return False
else:
stack.append(char)
return not stack
击败用户
2.暴力解法
依照题目,如果s
为有效字符串,必然有一个对称括号存在,一直删除对称括号直到s为控字符串。
class Solution:
def isValid(self, s):
while '{}' in s or '()' in s or '[]' in s:
s = s.replace('{}', '')
s = s.replace('[]', '')
s = s.replace('()', '')
return s == ''
击败用户
用时会比较长