首页 > 其他 > 详细

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

时间:2020-07-20 00:50:00      阅读:72      评论:0      收藏:0      [点我收藏+]

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

题目描述

技术分享图片

输入输出例子

思路

技术分享图片

思路

使用栈结构,用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;
        }
    }
}

输出:

技术分享图片

效率不咋好。

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

原文:https://www.cnblogs.com/jiyongjia/p/13342041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!