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;
};

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 先验概率和后验概率的定义是什么_先验和后验什么意思

    先验概率和后验概率的定义是什么_先验和后验什么意思话不多说,我因为在学习朴素贝叶斯的时候有点分不清楚先验概率、后验概率,所以就网上找了一些资料,大家各有各的理解,但感觉还是不太能从定义上区分,所以就有了下面这张图:图里面说的还是比较清晰的,大家有不理解的地方可以沟通交流嘛。…

    2022年10月18日
  • 【转载】C#中的泛型

    【转载】C#中的泛型

    2021年11月20日
  • 特征选择方法之信息增益

    特征选择方法之信息增益

  • Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色

    Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色Extjsgrid设置单元格字体颜色,单元格背景颜色,行背景颜色 一.在ColumnModel中用renderer渲染颜色:1.不定义样式:(1).字体颜色:{ header:"审核状态", dataIndex:"status", width:100, renderer:function(v){ if(v==1){ return"&lt;s…

  • 自己搭建游戏加速器_自己可以搭建加速器吗

    自己搭建游戏加速器_自己可以搭建加速器吗因为自己用nn减速器和朋友联机方舟延迟太高了,联系客服,客服又不懂我的意思(就我b事最多,爱用不用),所以出一个自建游戏加速器的教程。对迷失森林,使命召唤,怪物猎人,方舟,这样的和朋友联机的游戏,效果极佳警告:别用这个施展魔法!否则后果自负!只能用来国内游戏和朋友联机!win7系统懒得折腾就放弃吧,win10系统继续往下看,开发者请忽略这篇文章1买一个自己的服务器首选阿里云,其次腾讯云,因为阿里云宽带大。其他云服务器商没试过,宽带估计不如阿里云和腾讯云。腾讯云和阿里云的宽带都是非常好的。恰

    2022年10月28日
  • java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch

    java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch对于中间操作和终端操作的定义,请看《JAVA8stream接口中间操作和终端操作》,这篇主要讲述的是stream的count,anyMatch,allMatch,noneMatch操作,我们先看下函数的定义longcount();booleananyMatch(Predicate<?superT>predicate);…

发表回复

您的电子邮箱地址不会被公开。

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