zoukankan      html  css  js  c++  java
  • LeetCode20.有效的括号

    做这道题之前在《算法》这本书上看过相似的题目--Dijkstra的双栈判断四则运算求值法,这道题算简化版吧一下就想到了用栈这个思路。

    利用栈LIFO的特性判断上一个入栈的字符元素是否是匹配的括号,如果匹配就pop出来,不匹配则入栈。遍历完char数组之后判断栈的size,size是0就是符合要求的括号字符串。

    以 { [ ] } 为例:

    1次入栈  {

    2次入栈  [

    3次判断有符合要求字符,不push3,并弹出2

    4次判断有符合要求字符,不push4,并弹出1

    public static boolean isValid(String s) {
            Stack stack = new Stack();
            if (s.length()==0){
                return false;
            }
            for (char c:s.toCharArray()
                 ) {
                if (stack.size()==0){
                    stack.push(c);
                }
                else if (match(c, ((Character) stack.peek()))){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            }
            if (stack.size()==0){
                return true;
            }
            return false;
        }
    
        private static boolean match(char c,char matchChar){
            return c == ')' && matchChar == '(' || c == ']' && matchChar == '[' || c == '}' & matchChar == '{';
        }
    

      写match方法的时候第一次不小心把三种c==左括号情况也写上了,这样就导致了诸如"{][}"这种形式的也判断为true了,实际上明显不符合要求。

  • 相关阅读:
    Vmware安装CentOs7+gitlab(一)
    设计模式(一) 动态代理初尝试
    APP 技术支持
    App隐私条款
    Mac OS X中开启或关闭显示隐藏文件命令
    软件工程学习要点
    如何实现企业信息化
    记录一些flutter学习网址
    基于深度学习的语义分割
    对自动变速器的控制器建模
  • 原文地址:https://www.cnblogs.com/pauljoyce/p/14027977.html
Copyright © 2011-2022 走看看