leetcode 题解 || Valid Parentheses 问题[通俗易懂]

leetcode 题解 || Valid Parentheses 问题

大家好,又见面了,我是全栈君。

problem:

Given a string containing just the characters '(', ')', '{', '}', '[' and ']',
 determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are 
all valid but "(]" and "([)]" are not.

输入一个包括上述六种括号的字符串,检查括号是否能成功匹配

thinking:

(1)这是简化的表达式解析,匹配的方法是:

从低位到高位遍历字符串。出现左側括号('(‘、’[‘、’{‘)则入栈,出现右側括号('(‘\、'[‘、'{‘)则从栈中取出一个符号与之配对。

当出现:要从栈取字符时而栈为空、字符串遍历完而栈不为空   这 两种情况时,匹配失败。

(2)string s=”abcd”,最低位是a。别犯低级错误!

!!!

code:

class Solution {
protected:
    bool check(char a,char b)
    {
        cout<<"a: "<<a<<"b: "<<b<<endl;
        bool flag = false;
        if(a=='(')
        {
            if(b==')')
                flag=true;
        }
        else if(a=='[')
        {
            if(b==']')
                flag=true;
        }
        else
        {
            if(b=='}')
                flag=true;
        }
        return flag;

    }
public:
    bool isValid(string s) {
        string str=s;
        bool result=true;
        int length = str.size();
        stack<char> mystack;
        for(int i=0;i<length;i++)
        {
            cout<<"i="<<i<<"s[i]="<<str.at(i)<<endl;
            if(str.at(i)=='('||str.at(i)=='[' || str.at(i)=='{')
            {
                cout<<"this"<<endl;
                mystack.push(str.at(i));
            }
            else
            {
                cout<<" here"<<endl;
               if(mystack.empty())
                   return false;
               char tmp = mystack.top();
               mystack.pop();
               result=check(tmp,str.at(i));
               if(!result)
                    return false;
             }//else
        }//for
       if(mystack.size()!=0)
           return false;
       else
           return true;

    }
private:
    string str;
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115260.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月6日 下午10:00
下一篇 2022年2月6日 下午10:00


相关推荐

  • CGI,FAST-CGI,PHP-FPM的区别

    CGI,FAST-CGI,PHP-FPM的区别

    2021年10月9日
    78
  • Random函数用法

    Random函数用法一、random模块简介Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。二、random模块重要函数1)、random()返回0<=n<1之间的随机实数n;2)、choice(seq)从序列seq中返回随机的元素;importrandoma=rand…

    2022年4月28日
    49
  • Windows 批处理(bat)语法大全

    Windows 批处理(bat)语法大全本文是学习bat整理的笔记,由于内容较多,建议结合右侧文章大纲查看。%~dp0[获取当前路径]%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录cd%~dp0:进入批处理所在目录cd%~dp0bin\:进入批处理所在目录的bin目录示例这个示例在win10x64测试正常::作用:以管理员身份安装Apached:c…

    2022年7月21日
    22
  • allegro转pads方法_pads原理图转cadence

    allegro转pads方法_pads原理图转cadence1、首先电脑上安装好三个软件。我的是AD21、Cadence16.6、PADS9.52、先把BRD文件用AD21直接导入,AD21支持直接导入BRD文件的,然后导出低版本AD即可。3、再用PADS9.5安装自带的一个转换功率,叫PADSTanslation,直接导入AD低版本文件转换出PADS的文件即可。…

    2025年8月22日
    5
  • 如何用vscode进行前端开发 知乎_vscode单步调试

    如何用vscode进行前端开发 知乎_vscode单步调试如何用VsCode进行Debug本文以Mac系统,C++程序为例,进行Debug操作安装插件不同的语言需要安装的debug插件不一样,如下Debug页面VsCode的Debug页面如下配置Debug环境点击左侧的Debug图标,默认情况下,展示的是配置提示点击图中的【运行和调试】,选择【GDB/LLDB】环境,之后在下拉列表选择【默认配置】,系统自动创建launch.json文件,用于记录debug的配置信息,其中最主要的是配置调试的程序,program字段,选择要debug运行的

    2022年10月15日
    8
  • android数组转list_集合转json

    android数组转list_集合转json方法一:String[]newsItem={“条目1″,”条目2″,”条目3”};ArrayListlist=newArrayListCollections.addAll(list,newsItem);方法二:String[]newsItem={“条目1″,”条目2″,”条目3”}ListItem=Arrays.asLis

    2026年1月21日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号