1. /* 
  2.  *下面的代码用于判断一个串中的括号是否匹配 
  3. 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉 
  4.  
  5. 例如: 
  6. ..(..[..]..)..  是允许的 
  7. ..(...[...)....].... 是禁止的  
  8. 对于 main 方法中的测试用例,应该输出: 
  9. false 
  10. true 
  11. false 
  12. false 
  13.   
  14.  *  
  15.  */ 
  16. import java.util.*; 
  17. public class test20 
  18.     public static boolean isGoodBracket(String s) 
  19.     { 
  20.         Stack<Character> a = new Stack<Character>(); 
  21.          
  22.         for(int i=0; i<s.length(); i++) 
  23.         { 
  24.             char c = s.charAt(i); 
  25.             if(c=='(') a.push(')'); 
  26.             if(c=='[') a.push(']'); 
  27.             if(c=='{') a.push('}'); 
  28.              
  29.             if(c==')' || c==']' || c=='}'
  30.             { 
  31.                 //如果栈a为空,则可以直接返回false 
  32.                 if(a.empty()) return false;    // 填空   
  33.                 if(a.pop() != c) return false
  34.             } 
  35.         } 
  36.         //循环结束,如栈a还有元素,则返回false 
  37.         if(!a.empty()) return false;  // 填空 
  38.          
  39.         return true
  40.     } 
  41.      
  42.     public static void main(String[] args) 
  43.     { 
  44.         System.out.println( isGoodBracket("...(..[.)..].{.(..).}...")); 
  45.         System.out.println( isGoodBracket("...(..[...].(.).){.(..).}...")); 
  46.         System.out.println( isGoodBracket(".....[...].(.).){.(..).}...")); 
  47.         System.out.println( isGoodBracket("...(..[...].(.).){.(..)....")); 
  48.     }