zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    poj3468(A Simple Problem with Integers)线段树+树状数组
    关于JVM——JVM内存模型
    关于JVM——类加载机制
    关于JVM(二)
    关于JVM(一)
    关于LongAdder
    关于Future
    关于Fork/Join
    关于Atomic
    关于LockSupport
  • 原文地址:https://www.cnblogs.com/likaiming/p/8288433.html
Copyright © 2011-2022 走看看