zoukankan      html  css  js  c++  java
  • [Java]利用栈判断括号是否完整配对

    利用栈实现判断字符串中的括号是否都是配对的。

    主要算法是依次读取字符串中的每一个字符,如果是左括号则将左括号压入栈中,如果是右括号则从栈中弹出最上面的字符,若两者不是同种括号或栈内已经没有字符就返回false,循环完成后返回true。

    package com.example;
    
    /**
     * Created by XiaFF on 2014/11/18.
     *
     */
    public class Parentheses {
        public static void main(String[] args){
            String s="[()]{}{[()[]()]()}";
            System.out.println(isComplete(s));
        }
    
        public static boolean isComplete(String s){
            Stack<String> left=new Stack<String>();
            while (!s.isEmpty()){
                //取字符串首字母
                String character=s.substring(0,1);
                //剩余的字符串
                s=s.substring(1);
                if(character.equals("{")||character.equals("[")||character.equals("(")){
                    //如果是左括号,则压入栈
                    left.push(character);
                }else if(character.equals(")")||character.equals("]")||character.equals("}")){
                    //首先检查栈是否为空
                    if(left.isEmpty())
                        return false;
                    //弹出最后的左括号
                    String leftChar=left.pop();
                    //检查左右括号是否匹配
                    if(character.equals(")")){
                        if(!leftChar.equals("("))
                            return false;
                    }else if(character.equals("]")){
                        if(!leftChar.equals("["))
                            return false;
                    }else if(character.equals("}")){
                        if(!leftChar.equals("{"))
                            return false;
                    }
                }
            }
            //此时栈中不应该再有左括号
            return left.isEmpty();
        }
    }



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Chrome快捷键统计
    数据封装
    数据抽象
    linux c++ 服务器端开发面试必看书籍(转载)
    闭包和高阶函数
    this,call,apply,bind
    DOM浏览器window对象模型
    jquery滚动条
    xml教程
    多态
  • 原文地址:https://www.cnblogs.com/xiaff/p/4856510.html
Copyright © 2011-2022 走看看