C++怎么实现验证括号

这篇文章主要讲解了“C++怎么实现验证括号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现验证括号”吧!

专注于为中小企业提供成都网站设计、网站建设、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业阎良免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

Valid Parentheses 验证括号

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

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.

  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号和小括号。这里需要用一个栈,开始遍历输入字符串,如果当前字符为左半边括号时,则将其压入栈中,如果遇到右半边括号时,若此时栈为空,则直接返回 false,如不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回 false,代码如下:

 方法一:

class Solution {
public:
    bool isValid(string s) {
        stack parentheses;
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] == "(" || s[i] == "[" || s[i] == "{") parentheses.push(s[i]);
            else {
                if (parentheses.empty()) return false;
                if (s[i] == ")" && parentheses.top() != "(") return false;
                if (s[i] == "]" && parentheses.top() != "[") return false;
                if (s[i] == "}" && parentheses.top() != "{") return false;
                parentheses.pop();
            }
        }
        return parentheses.empty();
    }
};

方法二:

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

感谢各位的阅读,以上就是“C++怎么实现验证括号”的内容了,经过本文的学习后,相信大家对C++怎么实现验证括号这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享标题:C++怎么实现验证括号
转载来于:http://bzwzjz.com/article/ipigid.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 网站设计 成都定制网站建设 成都网站制作 成都网站制作 企业网站制作 成都网站建设 企业网站建设 成都网站设计 成都网站建设公司 网站建设开发 成都网站设计 成都商城网站制作 企业网站建设 重庆手机网站建设 移动手机网站制作 网站制作 上市集团网站建设 成都网站建设公司 高端网站建设 网站建设公司 企业网站设计