一、题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
二、解题思路过程
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
var li =[];
var dic = {
'(':')',
'[':']',
'{':'}'
};
for(var i=0;i<s.length;i++){
var t = s[i];
if(dic[t]){
li.unshift((dic[t]));
}else{
if(t==li[0]){
li.shift();
}else{
return 0;
};
};
};
return li.length == 0;
};
三、复杂度分析
时间复杂度:,其中 n 是字符串 s 的长度。
空间复杂度:,其中表示字符集,本题中字符串只包含 6 种括号,=6。栈中的字符数量为 ,而哈希表使用的空间为 ,相加即可得到总空间复杂度。
四、题目来源
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-parentheses