题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例:
输入:s = "()"
输出:true
输入:s = "()[]{}"
输出:true
输入:s = "(]"
输出:false
输入:s = "([)]"
输出:false
输入:s = "{[]}"
输出:true
方法分析:
使用堆栈以及字典,空间复杂度 O(n), 时间复杂度 O(n)
解法:
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if( s.length % 2 === 1) return false
let stack = []
let map = new Map()
map.set('(', ')')
map.set('{', '}')
map.set('[', ']')
for(let i=0; i<s.length; i++){
let t = s[i]
if(map.has(t)){
stack.push(t)
}else{
let a = stack[stack.length - 1]
if(map.get(a) === t) stack.pop()
else return false
}
}
return stack.length === 0
};
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情