java括号匹配的检验
时间: 2023-11-20 22:53:46 浏览: 43
在Java中,括号匹配的检验可以采用栈的方式来判断,也可以不采用栈,而是把字符串里成对的括号给删除(替换成空字符串),最后通过长度是否为0来判断括号是否匹配。其中,采用栈的方式可以保证时间复杂度为O(n),而不采用栈的方式则需要进行多次字符串替换,时间复杂度较高。
以下是两种方法的示例代码:
方法一:采用栈的方式来判断
```
public boolean isValid(String s) {
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.addLast(')');
} else if (s.charAt(i) == '[') {
stack.addLast(']');
} else if (s.charAt(i) == '{') {
stack.addLast('}');
} else if (stack.isEmpty() || s.charAt(i) != stack.removeLast()) {
return false;
}
}
return stack.isEmpty();
}
```
方法二:不采用栈,而是把字符串里成对的括号给删除(替换成空字符串),最后通过长度是否为0来判断括号是否匹配
```
public boolean isValid(String s) {
int length = s.length() / 2;
for (int i = 0; i < length; i++) {
s = s.replace("()", "").replace("{}", "").replace("[]", "");
}
return s.length() == 0;
}
```