给定一个只包含 (){}的字符串,验证括号是否完全闭合
时间: 2024-01-22 14:04:08 浏览: 68
可以使用栈(Stack)的数据结构来解决该问题。具体来说,我们从左到右遍历字符串,如果遇到左括号就将其入栈,如果遇到右括号就将栈顶元素出栈并将其与当前的右括号进行匹配,如果匹配成功则继续遍历,否则返回false。当遍历完整个字符串后,如果栈为空则说明所有括号都已完全闭合,否则返回false。
以下是Java代码实现:
```java
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' && top != '[')) {
return false;
}
}
}
return stack.isEmpty();
}
```
该方法的时间复杂度为O(n),其中n是字符串的长度。
阅读全文