• 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;
    }
  • 相关阅读:
    MySQL存储引擎与索引
    最长公共子序列
    最长递增子序列
    排序算法
    二分查找及其变种
    多线程中锁的种类。
    <LeetCode>136. 只出现一次的数字
    <LeetCode>121. 买卖股票的最佳时机
    Netty 粘包/拆包应用案例及解决方案分析
    微服务
  • 原文地址:https://www.cnblogs.com/likaiming/p/8288433.html
Copyright © 2020-2023  润新知