ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有效的括号

2022-01-23 19:30:32  阅读:141  来源: 互联网

标签:匹配 有效 栈顶 stk 括号 小括号 askll


这道题属于是括号匹配问题,用右括号去匹配左括号,当匹配成功时弹出左括号

此时我们可以想到可以用一种数据结构来表达这种匹配模式:栈

用栈读取左括号,当左括号与右括号匹配成功时就,弹出栈顶

而神奇的很,我们还可以用askll码来看两个符号是否匹配

look this

小括号,中括号,大括号之间的askll码 隔了一条巨大的鸿沟,而小括号之间askll码只隔了1,中括号,大括号之间隔了2,所以我们可以以askll码相减小于2,作为匹配成功的条件。

注意:左括号小于右括号,这里要用取绝对值的函数。

步骤:

1.遍历整个字符串,把左括号全部入栈

2.若不是左括号,则进行判断,若栈为空,或askll码相减大于2,则return false,若匹配成功则淡出栈顶。

3.如果全部匹配完成的话栈是为空的。

class Solution {
public:
    bool isValid(string s) {
    stack<char>stk;
    for(auto c:s){
        if(c=='('||c=='['||c=='{'){
            stk.push(c);
        }
        else {
        if(stk.size()&&abs(stk.top()-c)<=2)stk.pop();
        else return false;}
    }
    return stk.empty();

    }
};

标签:匹配,有效,栈顶,stk,括号,小括号,askll
来源: https://blog.csdn.net/m0_62000951/article/details/122655558

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有