Java1. 简答题 括号匹配问题是计算机程序设计中常见的问题之一。假设表达式中有3种括号:圆括号、方括号、花括号。请编写一个程序来判断表达式中的括号是不是匹配。
时间: 2024-10-10 08:10:41 浏览: 41
在Java中,解决括号匹配问题通常会采用栈(Stack)数据结构。下面是一个简单的解决方案:
```java
import java.util.Stack;
public class ParenthesesMatcher {
private static final String[] pairs = {")", "]", "}"};
public static boolean isMatch(String expression) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < expression.length(); i++) {
char currentChar = expression.charAt(i);
if (currentChar == '(' || currentChar == '[' || currentChar == '{') {
stack.push(currentChar);
} else if (!stack.isEmpty() && pairs[pairs.length - 1] == currentChar) {
stack.pop();
} else {
return false;
}
}
// 如果所有左括号都找到了对应的右括号,则返回true
return stack.isEmpty();
}
public static void main(String[] args) {
System.out.println(isMatch("()")); // 输出 true
System.out.println(isMatch("({[[]])")); // 输出 true
System.out.println(isMatch("({[})")); // 输出 false
}
}
```
这个`isMatch`函数遍历输入字符串中的每个字符,如果遇到左括号则入栈,遇到右括号时检查栈顶元素是否与其配对,如果不匹配或栈为空,则返回false;最后,如果整个循环结束栈为空,说明所有括号都匹配,返回true。
阅读全文