LeetCode-20-Valid Parentheses

一、问题描述

  给定一个字符串,字符串中只包含'(', ')', '[', ']', '{', '}',判断该字符串是否符合算术式括号的顺序。

  例子:不符合的情况比如说“([)]”,符合的情况比如说“()”

二、问题解决

  应该是很简单的一个问题了,使用一个栈,在遇到'(','[','{'时入栈,在遇到')',']','}'时和栈定元素比较,如果是配对的,则将站定元素出栈,如果不配对,则直接返回错误。当遍历完整个字符串,且栈为空的时候,表明这个字符串括号的顺序是完整的。

  下面的代码中使用了map将每个括号对关联起来,以便查找对于括号对。

bool isValid(string s) {
    stack<char> stack;
    map<char, char> m = { {')','('},{'}','{'},{']','['} };
    for (auto i : s) {
        if (i == '(' || i == '[' || i == '{')
            stack.push(i);
        if (i == ')' || i == ']' || i == '}') {
            //bool  r = s.empty();
            if (stack.empty() == false && m[i] == stack.top())
                stack.pop();
            else
                return false;
        }
    }
    if(stack.empty())
        return true;
    return false;
}

int main()
{
    cout << isValid("]") << endl;

    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/likaiming/p/8288433.html