1 public class Match {
 2     public boolean match(String expression) {
 3         char[] array = expression.toCharArray();
 4         char[] stack = new char[array.length];
 5         int top = 0;
 6         /* 把左括号存入栈(数组)中 */
 7         for (int i = 0; i < array.length; i++) {
 8             if (array[i] == '(' || array[i] == '[' || array[i] == '{') {
 9                 stack[top++] = array[i];
10             }
11         }
12 
13         /* 把栈顶元素与array数组中的元素匹配 */
14         for (int i = 0; i < array.length; i++) {
15             if (array[i] == ')' || array[i] == ']' || array[i] == '}') {
16                 if (stack[top] != '(' || stack[top] != '[' || stack[top] != '{') {
17                     /* 若top减到0还需要减,则说明还有元素未匹配,此时直接返回false */
18                     if (top > 0) {
19                         top--;
20                     } else {
21                         return false;
22                     }
23                 }
24             }
25         }
26         /* 如果 stack中还有元素,说明没有匹配完,直接返回false */
27         if (top != 0) {
28             return false;
29         } else {
30             return true;
31         }
32 
33     }
34 
35     public static void main(String[] args) {
36         String expression = "[][[[[(]])]}}}}}}}}}}";
37         Match match = new Match();
38         System.out.println("结果为:" + match.match(expression));
39     }
40 }

运行结果:

      

 

posted on 2017-04-19 22:57  呵呵静  阅读(1021)  评论(0编辑  收藏  举报