zoukankan      html  css  js  c++  java
  • 匹配括号

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    import java.util.Stack;
    
    
    public class Stackmatch {
    
     
        public static void main(String[] args) {
            
            //输入
            int keyin=6;
            String source[]={"(","(","(",")","(","(",")",")",")",")"};
                   //          1   2    3  4   5   6   7   8   9   10
                    
            
            //计算
            StringBuilder result=new StringBuilder();
            int intnum=keyin-1;
            
            Stack<String> s=new Stack<String>();
            
            
             // ")" right to left   
            String flag=source[intnum];
            int start=intnum;
            if(flag.equals("(")){
                 
            }else{
                start=source.length-intnum-1; 
            }
            
            String sourceb[]=source.clone();         
         
            List<String> l=Arrays.asList(source);
            if(flag.equals(")")){
                Collections.reverse(Arrays.asList(sourceb));
                
            }else{
                Collections.reverse(l);
            }
            
            s.addAll(l);
     
            
            boolean startscan=false;
            boolean end=false;
            int index=0;
            int mark=1;
            while(!end){
                
                String tmp=s.pop();
                
                if(index==start){
                    //System.out.println("start:"+keyin);    
                    result.append("start:"+keyin);
                    startscan=true;
                    index++;
                    continue;
                }
                
                if(startscan){
                    
                    if(tmp.equals(sourceb[start])){
                        mark++;                
                    }else{
                        mark--;    
                    }
                    
                    if(mark==0)
                    {
                        end=true;
                        if(flag.equals(")")){
                         //  System.out.println("end:"+(source.length-index-1+1));
                           result.append("   end:"+(source.length-index-1+1));
                        }else{
                            //System.out.println("end:"+(index+1));
                            result.append("  end:"+(index+1));
                        }
                        break;
                    }
                }
                
                index++;
                            
            }
                    
            System.out.println(result);
    
        }
    
    }
  • 相关阅读:
    邮件发送工具类
    redis在项目中配置
    搭建zookeeper集群
    activeMQ安装
    solr安装配置中文分词IK
    reids安装
    jdk/tomcat/mysql在linux下安装
    使用poi进行excel导入
    linux 大杂烩
    找包网址
  • 原文地址:https://www.cnblogs.com/rojas/p/6945189.html
Copyright © 2011-2022 走看看