⚡️20. 有效的括号⚡️
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成
⚡️分析⚡️
可用栈和字典两种数据结构一起解,字典中配置括号的映射关系
代码如下:
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if(s.length % 2 ===1)return false;//奇数个直接false,肯定不满足配对
map=new Map();
map.set('(',')');//配置映射关系
map.set('{','}');
map.set('[',']');
stack=[];
for(let i = 0;i < s.length;i++){
const now=s[i];
if (map.get(now)){//让左括号入栈,右括号在字典中没配置映射关系
stack.push(now);
}else {
const c = stack[stack.length-1];//取栈顶元素
if (map.get(c) === now){//如果栈顶元素在字典中映射的元素符合
stack.pop();//弹出
}else {
return false;
}
}
}
return stack.length === 0;
};
算法效率如图:
觉得该篇文章有用的请不要忘记忘记点击右下角的大拇指~
欢迎大家关注我的公众号:Smooth前端成长记录
公众号同步更新CSDN博客内容,想方便阅读博客的C友可以来关注我的公众号以便获得更优良的阅读体验~