有效的括号
https://leetcode-cn.com/problems/valid-parentheses/submissions/ (opens new window)
# JavaScript 解法
var isValid = function(s) {
const arr = [...s]
if(arr.length <=1) return false
const stack = []
const hashmap = {
")": "(",
"]": "[",
"}": "{"
}
for(let i=0; i< arr.length; i++){
if(arr[i] in hashmap){
if(!stack.length ||stack.pop() != hashmap[arr[i]]){
return false
}
}else{
stack.push(arr[i])
}
}
return !stack.length
};
# 需要注意的点
# Python 解法
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) % 2 == 1 :
return False
"""
pairs 字典
key,是右边符号,分别是],),}
value,是左边符号,分别是[,{,(
"""
pairs = {
'}': '{',
')': '(',
']': '['
}
# 用list 模拟栈
slist = list()
for ch in s:
# 判断 ch 是否在pairs,是的话判断是否符合栈里最后一位相同,否则添加进栈
if ch in pairs:
"""
这里的判断有两个作用
1>判断栈非空,也就是第一个元素是右边符号,即],),}
2>判断栈最后一位跟字典最后一位是否相同
"""
if not slist or slist[-1] != pairs[ch]:
return False
slist.pop()
else:
slist.append(ch)
return not slist