做一個空棧,讀入字符直到結尾.如果讀入一個封閉符號,空棧時報錯;非空時彈出棧尾字符,如果不匹配則報錯.否則讀入為開放字符,壓入棧中.最后如果棧空,返回true.
其中用到MyStack類,詳情請見
1 public class KuohaoJiancha { 2 private char [] item = {'(',')','[',']','{','}'}; 3 private MyStack stack = new MyStack(); 4 private char[] str; 5 private int currentNum; 6 public KuohaoJiancha(String str){ 7 this.str = str.toCharArray();; 8 } 9 10 public boolean display(){ 11 for(int i = 0; i < str.length; i++){ 12 currentNum = charNumber(str[i]); 13 if(misByStackIsEmpty(str[i])) 14 return false; 15 16 if(currentNum % 2 == 1) { 17 if (currentNum - charNumber((char) stack.pop()) != 1) 18 return false; 19 } 20 else stack.push(str[i]); 21 } 22 return true; 23 } 24 25 private int charNumber(char c){ 26 int i = 0; 27 for(; i < 6; i++){ 28 if(c == item[i]) 29 break; 30 } 31 return i; 32 } 33 34 private boolean misByStackIsEmpty(char c){//如果讀入一個封閉符號,空棧時報錯 35 if(stack.isEmpty()) 36 if(currentNum % 2 == 1) 37 return true; 38 return false; 39 } 40 41 }