帮我写一个java的括号匹配算法
时间: 2023-08-28 20:35:56 浏览: 35
好的,下面是一个简单的Java括号匹配算法的实现,你可以参考一下:
```java
import java.util.Stack;
public class ParenthesesMatching {
public static boolean is_valid_parentheses(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if (c == ')' && !stack.empty() && stack.peek() == '(') {
stack.pop();
} else if (c == ']' && !stack.empty() && stack.peek() == '[') {
stack.pop();
} else if (c == '}' && !stack.empty() && stack.peek() == '{') {
stack.pop();
} else {
return false;
}
}
return stack.empty();
}
public static void main(String[] args) {
String s1 = "()[]{}";
String s2 = "([)]";
System.out.println(is_valid_parentheses(s1)); // true
System.out.println(is_valid_parentheses(s2)); // false
}
}
```
这个算法的基本思路与前面给出的 Python 实现类似,也是使用一个栈来存储左括号,每当遇到右括号时,判断当前栈顶元素是否与该右括号匹配,如果匹配,则将栈顶元素弹出,否则直接返回 False。最后如果栈为空,则说明所有括号都匹配成功,返回 True。
需要注意的是,Java 中的字符类型是使用单引号括起来的,而不是双引号。另外,Java 中的栈是使用 Stack 类来实现的,需要使用 push、pop、peek 等方法来操作栈。