LeetCode20 - Valid Parentheses

Valid Parentheses

因为满足要求的字符串中,必有一封闭括号在其内部,且去除此括号,剩余的依然内部为封闭括号。

所以,此问题使用堆栈操作较易解决

(1)构建字符堆栈,遍历字符串 s

(2)如遇 '(', '[', "{",则入栈

          遇')', ']', '}',若堆栈中有相对应的括号,则弹栈;无,则不满足要求返回 false

代码如下:

class Solution {
public:
    bool isValid(string s) {
        stack<char> brackets;
        for (auto& c: s)
        {
            switch (c)
            {
                case '(':
                case '[':
                case '{':   
                    brackets.push(c);
                    break;
                case ')':   
                    if (brackets.empty() || brackets.top() != '(')
                    {
                        return false;
                    }
                    else
                        brackets.pop();
                    break;
                case ']':
                    if (brackets.empty() || brackets.top() != '[')
                    {
                        return false;
                    }
                    else
                        brackets.pop();
                    break;
                case '}':
                    if (brackets.empty() || brackets.top() != '{')
                    {
                        return false;
                    }
                    else
                        brackets.pop();
                    break;
            }
        }
        return brackets.empty();
    }
};

此问题补充知识点:

堆栈对初次使用,及push、pop、top函数的使用

猜你喜欢

转载自blog.csdn.net/qq_35277038/article/details/81812228