判断一个含多种括号的字符串是否匹配正确 (如(([]))正确,[[(()错误)

来源:互联网 发布:网络语言tr是什么意思 编辑:程序博客网 时间:2024/04/28 13:19
public boolean isMatch(String str){ 2             Stack stack = new Stack(); 3             for(int i = 0; i < str.length(); ++i){ 4                 char ch = str.charAt(i); 5                 if(ch == '[' || ch == '{' || ch == '('){ 6                      stack.push(ch); 7                 } else if(ch == ']' || ch == '}' || ch == ')'){ 8                     if(stack.isEmpty()){     //合法性判断:“消去”后残留的反括号或者本身就是反括号开头(例:“}...”) 9                          return false;10                     }11                    char top = stack.peek();12                    if(ch == ']' && top == '[' || ch == '}' && top == '{' || ch == ')' && top == '('){    //“消去”一对13                       stack.pop();14                      }15                      else{16                        return false;17                      }18                 }19              }20          return stack.isEmpty();    //最后一次“消去”(不会再执行“判断”,所以在这儿判断),是否残留反括号21       }
0 0