#检查字符串中括号是否正确配对

利用栈来实现,若为左括号,将字符入栈,若为右括号,栈顶是否为其对应左括号,若对应,栈顶元素出栈。循环结束,若栈为空,则字符串括号匹配正确,否则,匹配错误。

#include <iostream>
#include <stack>
using namespace std;
bool isValid(string s) {
    string left="({[";
    string right=")}]";
    string total=right+left;
    stack<char> stk;
    for(auto item : s)
    {
        if(total.find(item) != string::npos)
        {
            if(left.find(item) != string::npos)
            {
                stk.push(item);
            }
            else
            {
                if (!stk.empty() && stk.top() ==left.at(right.find(item)))
                    stk.pop();
                else
                    return false;
            }
        }

    }
    return stk.empty();
}
int main()
{
    string s="{{{([(asdf)rgfr]ttt)!!!}}}",s2="{{{)))}}}";
    cout<<isValid(s)<<endl<<isValid(s2)<<endl;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,195评论 0 13
  • 在现实生活中,遇到这种情况,大多数人会占为己有或为贪心或为法盲,因为这是捡的!极少数人会拾金不昧如数奉还。殊不知,...
    修行_3c7b阅读 328评论 0 0
  • 引子:一般我们在在表达观点的时候,比如说工作汇报、面试,你讲了五分钟,别人可能还会说这样一句话“你到底在说些什么?...
    柠檬糖55520阅读 204评论 0 2
  • 十年前毕业的时候,绝想不到如今的人生状态会是这样。在安稳热烈枯燥喜欢的各个岗位转了一圈,在物欲狂欢包治百病纸醉金迷...
    呆梨羊阅读 429评论 0 0