zoukankan      html  css  js  c++  java
  • [编程题] lc 20有效的括号-考察栈

    [编程题] lc:20. 有效的括号-考察栈

    题目描述

    image-20200719232736405

    输入输出例子

    思路

    image-20200719232819935

    思路

    使用栈结构,用map保存匹配键值对(LinkedList实现Deque接口模拟栈)

    Java代码

    class Solution {
        public boolean isValid(String s) {
            //借助栈
            Deque<Character> stack1 = new LinkedList<Character>();
            
            //用于备查的字典
            HashMap<Character,Character> map = new HashMap();
            map.put(')','(');
            map.put(']','[');
            map.put('}','{');
    
            for(int i=0;i<s.length();i++){
                char c = s.charAt(i);
                //这里说明就是( [ {的情况就放入栈
                if(!map.containsKey(c)){
                    stack1.push(c);
                }else{
                    //如果判断是map的键中包含,就是右括号系列,就拿出栈顶比较
                    if(stack1.isEmpty()){return false;} //边界,如果一开始栈中没东西,肯定就没左半部分匹配
                    char top = stack1.peek();
                    char value = map.get(c);
                    if(top==value){
                        //把此元素出栈
                        stack1.pop();
                    }else{
                        return false;
                    }
                }
            }
    
            //遍历完字符串后,判断栈是否为空,为空则返回true,否则返回false
            if(stack1.isEmpty()){
                return true;
            }else{
                return false;
            }
        }
    }
    

    输出:

    image-20200719233000589

    效率不咋好。

  • 相关阅读:
    Redis的发布订阅
    Redis的事物
    Redis的持久化
    Redis配置文件详解
    Redis五大数据类型
    Redis安装
    DP练习题回顾
    基环树浅谈
    Tarjan算法浅谈
    拓展欧拉定理浅谈
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13342041.html
Copyright © 2011-2022 走看看