堆栈_括号匹配

Posted summerkiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆栈_括号匹配相关的知识,希望对你有一定的参考价值。

技术分享

class Solution {
public:
    bool isValid(string s) {
        if(s.empty())
            return false;
        stack<int> s1;
        int n=s.size();
        for(int i=0;i<n;i++)
        {
            if(s[i]==(||s[i]==[||s[i]=={)
                s1.push(s[i]);
            else if(s1.empty())
                return false;
            else if((s[i]==)&&s1.top()==()||(s[i]==]&&s1.top()==[)||(s[i]==}&&s1.top()=={))
                s1.pop();
            else
                return false;
        }
        if(s1.empty())
            return true;
        else
            return false;
    }
};

此题的思路是:最前面的左括号要和最后面的右括号匹配,所以是一种先进后出的思想,使用堆栈最方便,且要注意括号的顺序,不能出现交叉的情况。

我在leetcode上做的时候,一开始没有注意到函数的返回值是bool,自己随便return值,所以出现了wrong answer,修改为返回false和true之后就正确了,细节要注意。

以上是关于堆栈_括号匹配的主要内容,如果未能解决你的问题,请参考以下文章

Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现

堆栈在括号匹配和递归中的应用;队列的应用

试编写一个算法从检查一个Java语言中的大括号方括号小括号是不是配对,若能够全?

用栈检测括号匹配

堆栈模板括号序列

数据结构栈的应用——括号匹配问题