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 }
运行结果:
愿你悄悄的努力,遇见更好的自己~