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)


相关推荐

  • 计算机网络中广域网和局域网_广域网接入技术有哪些

    计算机网络中广域网和局域网_广域网接入技术有哪些 局域网与广域网   局域网(LocalAreaNetwork,LAN)是将分散在有限地理范围内的多台计算机通过传输媒体连接起来的通信网络,通过功能完善的网络软件,实现计算机之间的相互通信和资源共享;广域网(WideAreaNetwork,WAN)是在传输距离较长的前提下所发展的相关技术的集合,用于将大区域范围内的各种计算机设备和通信设备互联在一起,组成一个资源共享的通信网络。 …

    2022年10月10日
  • pocib业务流程图_财务流程图

    pocib业务流程图_财务流程图POCIB各阶段流程报关流程从广义上讲,报关是指进出境运输工具负责人、进出境口货物收发货人、进出境物品的所有人或者他们的代理人向海关办理运输工具、货物、物品进出境手续及相关手续的全过程。其中,进出境运输工具负责人、进出口货物收发货人、进出境物品的所有人或者他们的代理人是报关行为的承担者,是报关的主体,也就是报关人,也称报关单位。这里所指的报关人既包括法人和其他组织,比如进出口企业、报关企业,也包括…

  • linux关闭networkmanager服务_networkmanager是什么服务

    linux关闭networkmanager服务_networkmanager是什么服务systemctlstopNetworkManagersystemctldisableNetworkManager

  • python下mqtt服务器的搭建_搭建MQTT服务器

    python下mqtt服务器的搭建_搭建MQTT服务器就让我来试试传说中最适用于IOT的MQTT协议。安装虽然搜索资料很多,但大多是MQTT的使用,尽管有搭建服务器的文章,但我感觉写的不太清楚,大多数文章选择了Mosquitto(也许是Eclipse大厂出品的原因)。经过寻找,找到了Nodejs写的mosca,但在Pi上老是安装失败,翻了翻Issues,找到了同作者写的依赖性小,轻量化的aedes。npminstallaedes–save//…

  • JavaScript闭包

    JavaScript闭包闭包内部函数拥有比它的外部函数更长的生命周期!!!函数可以访问它被创建时所处的上下文环境!!!内部函数能访问外部函数的实际变量,而无需复制!实例:/**点击li标签时,调用其onclick事件,执行代码段function(){alert(i);}*此时,i在全局中的值为4*/window.onload=init;functioninit(){ var

  • 背包九讲Java版本

    背包九讲Java版本packagedp;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/***背包九讲**@ProjectName:algorithm*@Package:dp*@Description:TODO*@Author:bipa*@Date:2022/1/88:00*/publicclassPack{/***01背包(

发表回复

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

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