假设表达式中允许包含3种括号:圆括号、方括号和大括号。即小括号、中括号和大括号。 用Java编写一个算法来判断表达式中的括号是否正确配对,要求利用栈的结构实现。
时间: 2024-05-06 18:21:27 浏览: 99
好的,这是一个技术问题,我可以回答。下面是算法实现:
```
import java.util.*;
public class BracketMatcher {
public static boolean match(String input) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (stack.isEmpty() || !isPair(stack.peek(), c)) {
return false;
}
stack.pop();
}
}
return stack.isEmpty();
}
private static boolean isPair(char left, char right) {
return (left == '(' && right == ')') || (left == '[' && right == ']') || (left == '{' && right == '}');
}
public static void main(String[] args) {
System.out.println(match("()[]{}")); // true
System.out.println(match("([)]")); // false
System.out.println(match("{[()]}")); // true
}
}
```
这个算法会遍历输入字符串中的每个字符,如果遇到左括号就将其压入栈中,如果遇到右括号就判断栈顶的左括号是否与之相匹配。如果不匹配或者栈为空,就说明括号不正确,返回false;否则弹出栈顶的左括号。最后如果栈为空,就说明所有括号都正确匹配。
阅读全文