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();
        }
    }



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

  • 相关阅读:
    Javascript图片预加载详解
    Canvas入门(3):图像处理和绘制文字
    CSS强制英文、中文换行与不换行 强制英文换行
    数组分隔成两个一组
    scrollview嵌套tableview
    审核被拒:1. 1 Safety: Objectionable Content ;3. 1.1 Business: Payments
    流程控制-用布尔值
    xcode代码提示没了
    sourceTree回退撤销commit
    iOS使用mask切割不规则图案
  • 原文地址:https://www.cnblogs.com/xiaff/p/4856510.html
Copyright © 2011-2022 走看看