栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

20. 有效的括号

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

20. 有效的括号

 

虽然是一道简单题,但是我还是有想法的,就想写写题解,相信你们都会做,那就来看看有没有你没考虑到的方法吧:

方法一:直接模拟

这个代码是我自己写的,写完以后才发现有这么多问题(主要是逻辑上的错误,已订正):

class Solution {

public:

    bool isValid(string s) {

        int len=s.size();

        if(len%2!=0)

        return false;

        stack  p;

            for(int i=0;i

            {

                if(p.empty()&&(s[i]==')'||s[i]==']'||s[i]=='}'))

                return false;

                else if(s[i]==')'&&p.top()=='(')

                p.pop();

                else if(s[i]==']'&&p.top()=='[')

                p.pop();

                else if(s[i]=='}'&&p.top()=='{')

                p.pop();

                else

                p.push(s[i]);

            }

        

        return p.empty();

    }

};

方法二:利用map来对应(官方题解,值得学习)

class Solution {

public: bool isValid(string s)

{ int n = s.size(); if (n % 2 == 1)

{ return false; }

unordered_map pairs =

{ {')', '('},

{']', '['},

{'}', '{'} };

stack stk;

for (char ch: s)

{ if (pairs.count(ch))//如果找到了这个字符,那么就来判断栈顶的元素是否与之对应

{ if (stk.empty() || stk.top() != pairs[ch])

{ return false; }

stk.pop(); }

else { stk.push(ch); } }

return stk.empty(); }

};

方法三:ascll码的值(大佬神解,妙手回春)

class Solution {

public:

    bool isValid(string s) {

        if(s == ""){

            return true;

        }

        vector stack;

        stack.push_back(s[0]);

        for(int i=1; i

            if(stack.empty() == true){

                stack.push_back(s[i]);

            }else if(s[i] - stack.back() == 1 || s[i] - stack.back() == 2){//注意这个地方不能加绝对值,要不然就错了

                stack.pop_back();

            } else {

                stack.push_back(s[i]);

            }

        }

        return stack.empty();

    }

};

                                                                                                             记录当下,我的编程之路

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号