java给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
时间: 2024-11-25 17:01:34 浏览: 7
在 Java 中,你可以使用栈 (Stack) 的数据结构来解决这个问题。栈是一种后进先出 (LIFO) 的数据结构,非常适合处理需要检查配对字符的问题。对于每个字符,你需要按照以下规则来进行:
1. 如果遇到 '(', '{', '[', 开始一个新的栈元素。
2. 遇到 ')'、'}' 或 ']' 时,检查栈顶元素是否对应当前字符的开启符号(即 '(' 对应 ')','{' 对应 '}','[' 对应 ']')。如果匹配,则弹出栈顶元素;如果不匹配,返回 false。
3. 如果遍历完整个字符串后,栈为空,说明所有的配对都成功关闭了,返回 true;否则,存在未关闭的开启符号,返回 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 (c == ')' && !stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else if (c == '}' && !stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else if (c == ']' && !stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else {
return false; // 不匹配的闭合符
}
}
return stack.isEmpty(); // 检查栈是否为空
}
```
阅读全文