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

    1。判断括号是否成对出现

     1 import java.util.Stack;  
     2 
     3 public class KuoHao  
     4 {  
     5   
     6     public boolean check(String str)  
     7     {  
     8         Stack<Character> stack = new Stack<Character>();  
     9         boolean flag = true;  
    10         for (int i = 0; i < str.length() && flag; i++)  
    11         {  
    12             try  
    13             {  
    14                 switch (str.charAt(i))  
    15                 {  
    16                 case '(':  
    17                 case '[':  
    18                 case '{':  
    19                     stack.push(str.charAt(i));  
    20                     break;  
    21                 case ')':  
    22                     if (stack.pop() != '(')  
    23                         flag = false;  
    24                     break;  
    25                 case ']':  
    26                     if (stack.pop() != '[')  
    27                         flag = false;  
    28                     break;  
    29                 case '}':  
    30                     if (stack.pop() != '{')  
    31                         flag = false;  
    32                     break;  
    33                 }  
    34             }  
    35             catch (Exception e)  
    36             {  
    37                 flag = false;  
    38             }  
    39         }  
    40         if (flag && !stack.isEmpty())  
    41             flag = false;  
    42   
    43         return flag;  
    44     }  
    45   
    46     public static void main(String[] args)  
    47     {  
    48         KuoHao pm = new KuoHao();  
    49         System.out.println("(: " + pm.check("("));  
    50         System.out.println("a(bc[d])e{fd}: " + pm.check("a(bc[d])e{fd}"));  
    51         System.out.println("a(bc]d: " + pm.check("a(bc]d"));  
    52         System.out.println("a(b(c))d: " + pm.check("a(b(c))d"));  
    53         System.out.println("a(b)c)d: " + pm.check("a(b)c)d"));  
    54     }  
    55 }  

    2.问题描述:括号成对出现,查找第N个左括号与之匹配的右括号中的内容

      例如:字符串:A((B)((CD)(E)F)) 查找第1左括号,输出(B)((CD)(E)F)

    import java.util.Scanner;
    
    public class KuoHao2 {
    	
    	public static void search(int N,String s){
    		int i = 0,k=-1, w= -1;
    		do{
    			k = s.indexOf("(",k+1);
    			i++;
    		}while(i < N && k != -1);
    		
    		if(k > 0){
    			int first = k+1;
    			System.out.println("查找字符串""+s+""的第"+N+"个左括号内的内容,匹配起始位于字符串的第:"+(first)+"位");
    			w = s.indexOf(")",k+1);
    			w = a(w, k, s);
    				int end = w;
    				System.out.println("匹配结束位于字符串的第:"+(end+1)+"位");
    				System.out.println("输出为:"+s.substring(first,end ));
    			} else {
    				System.out.println("不存在')'");
    			}
    			
    		
    	}
    	
    
    	public static int a(int w, int k, String s){
    		if(w > 0){
    			int  m =1, n = 1;
    			boolean f = false;
    			do{
    				if(s.indexOf("(",k+1)>0 && s.indexOf("(",k+1) < w){
    					k = s.indexOf("(",k+1);
    					m += 1;
    				}
    				while( m > n ){
    					while(s.indexOf("(",k+1)>0 && s.indexOf("(",k+1) < w){
    						m++;
    						k = s.indexOf("(",k+1);
    						
    					}
    					
    					for(int j=0; j<=m-n; j++){
    						n++;
    						w = s.indexOf(")",w+1);
    					}
    				}
    				
    				if(s.indexOf("(",k+1)>0 && s.indexOf("(",k+1) < w)
    					f = true;
    				else f = false;
    			}while(f);
    		} else {
    			System.out.println("不存在'('");
    		}
    		return w;
    	}
    		
    	public static void main(String[] args) {
    		String s = "A((B)((CD)(E)F))";
    		Scanner ss =  new Scanner(System.in);
    		int N = ss.nextInt();
    		search(N,s);
    	}
    
    }
    

      运行截图:

          

  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/cq-home/p/3203161.html
Copyright © 2011-2022 走看看