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

    在这里插入图片描述
    该题需要检验一个由括号组成的表达式是否有效,关键思路是:一个正确表达式,它的子表达式也是正确的表达式。这就体现了一种递归结构,由于对结构一无所知所以我们不能从内到外处理这个问题。栈结构在表示问题的递归结构时可以派上用场。
    算法:

    • 初始化栈stack
    • 遍历字符串表达式,如果遇到左括号则入栈
    • 如果遇到右括号弹出栈顶元素,如果当前右括号与栈顶元素不等则表达式无效,此时栈为空栈表达式也无效
    • 遍历结束后栈中仍然存在元素则表达式无效
    class Solution {
        public boolean isValid(String s) {
            if(s.length()%2!=0)return false;
            HashMap<Character,Character> map = new HashMap<>();
            map.put(')','(');
            map.put('}','{');
            map.put(']','[');
            Stack<Character> stack = new Stack<>();
            for(int i = 0; i < s.length(); i++){
                char c = s.charAt(i);
                if(map.containsKey(c)){
                    if(stack.empty())return false;//栈为空遇到闭括号则表达式错误
                    if(map.get(c)!=stack.pop())return false;
                }else{//如果是开括号则入栈
                    stack.push(c);
                }
            }
            return stack.empty();
        }
    }
    
  • 相关阅读:
    NO.2
    【转载】初始化顺序
    Java中的容器
    primer看完了
    NO.1
    转 Python爬虫入门二之爬虫基础了解
    转 Python爬虫入门一之综述
    hdu 5691 Sitting in Line
    51nod 1043 幸运号码
    51nod 1624 取余最长路
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860030.html
Copyright © 2011-2022 走看看