使用栈的性质进行实现
String s = "...(...[....]....{....}..)...(...)..";
char[] arr = s.toCharArray();
Stack<Character> kh = new Stack<>();
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case '(':
case '[':
case '{':
kh.push(arr[i]);
break;
case ')':
if (kh.isEmpty()) {
kh.push(arr[i]);
i = arr.length;
break;
} else if (kh.peek() == '(') {
kh.pop();
break;
} else {
i = arr.length;
break;
}
case ']':
if (kh.isEmpty()) {
kh.push(arr[i]);
i = arr.length;
break;
} else if (kh.peek() == '[') {
kh.pop();
break;
} else {
i = arr.length;
break;
}
case '}':
if (kh.isEmpty()) {
kh.push(arr[i]);
i = arr.length;
break;
} else if (kh.peek() == '{') {
kh.pop();
break;
} else {
i = arr.length;
break;
}
default:
break;
}
}
if (kh.isEmpty()) {
System.out.println("匹配成功!");
} else {
System.out.println("匹配失败!");
}