zoukankan      html  css  js  c++  java
  • [LeetCode] 20. 有效的括号

    题目链接:https://leetcode-cn.com/problems/valid-parentheses/

    题目描述:

    给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    示例:

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

    输入: "()[]{}"
    输出: true
    

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

    输入: "([)]"
    输出: false
    

    示例 5:

    输入: "{[]}"
    输出: true
    

    思路:

    匹配问题,我们一般使用

    遍历字符串,我们把左括号压入栈中,当遇到右括号,和栈顶元素比较!

    时间复杂度:(O(n))

    空间复杂度:(O(n))


    关注我的知乎专栏,了解更多的解题技巧!

    代码:

    python

    class Solution:
        def isValid(self, s: str) -> bool:
            stack = []
            lookup = {
                "(":")",
                "[":"]",
                "{":"}"
            }
            for alp in s:
                if alp in lookup:
                    stack.append(alp)
                    continue
                if stack and lookup[stack[-1]] == alp:
                    stack.pop()
                else:
                    return False
            return True if not stack else False
    

    java

    class Solution {
        public boolean isValid(String s) {
            Stack<Character> stack = new Stack<Character>();
            for (char alp : s.toCharArray()) {
                if (alp == '(') stack.push(')');
                else if (alp == '[') stack.push(']');
                else if (alp == '{') stack.push('}');
                else if (stack.isEmpty() || stack.pop() != alp) return false;
            }
            return stack.isEmpty();
            
        }
    }
    
  • 相关阅读:
    ElasticSearch搜索
    Muddery框架
    https和http的区别
    multiprocessing模块创建进程
    进程理论基础
    单例模式
    原型模式
    建造者模式
    StrutsTypeConverter的使用
    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系--UML一波流系列讲解
  • 原文地址:https://www.cnblogs.com/powercai/p/10775167.html
Copyright © 2011-2022 走看看