.有效的括号

文章描述了一种利用栈的特性解决字符串中括号配对有效性的算法,通过创建一个字典和栈来判断输入字符串s中的括号是否完全成对。遇到右括号时,检查栈顶元素的左括号是否匹配,若不匹配则返回false。同时考虑了边界条件,确保栈空时的正确处理。

思路:利用栈的特性来做,创建键为左括号值为右括号的字典
如果当前遍历字符在字典中,压栈,则可确定栈中都是左括号
如果不在字典中,即为右括号,则判断字典中键为栈顶元素的值是否为当前遍历字符,不符合则返回false
边界问题:如果栈空,弹栈会报错,因此,我们采用一个取巧方法给stack赋初值?,并在字典中建立?的索引,
当栈为空且字符为空右括号时,disc[stack.pop()]为’?',即可正确处理
若遍历完后栈中有左括号,则说明不完全成对,对此判断栈长度==1

var isValid = function(s) {
    let disc = {'{':'}', '(':')', '[':']', '?':'?'};
    let stack = ['?'];
    for(let c of s){
        if(disc[c]) stack.push(c);
        else if(disc[stack.pop()] !== c) return false;
    }
    return stack.length === 1;
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值