如何用 Java 编写一个算法来验证给定字符串中的括号(如'()()')是否有效并保持平衡?
时间: 2024-10-22 18:06:25 浏览: 22
在 Java 中,你可以使用栈(Stack)数据结构来编写一个算法来检查给定字符串中的括号是否有效。这里是一个简单的步骤描述:
1. 创建一个空栈 `stack`。
2. 遍历输入字符串的每一个字符,对以下情况进行处理:
a. 如果遇到左括号(如 '(', '{', '['),将它压入栈 `stack`。
b. 如果遇到右括号(如 ')', '}', ']`),首先检查栈顶元素是否与其匹配:
- 如果匹配,则弹出栈顶元素;
- 否则,说明不匹配,返回 false。
3. 遍历结束后,如果栈为空,那么所有括号都已配对,返回 true;否则,表示还有未关闭的左括号,返回 false。
这是一个基础版本的算法,下面是一个简单的 Java 实现示例:
```java
import java.util.Stack;
public class BracketValidator {
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; // 匹配错误,直接返回false
}
}
return stack.isEmpty(); // 检查栈是否为空
}
public static void main(String[] args) {
BracketValidator validator = new BracketValidator();
System.out.println(validator.isValid("()")); // 输出: true
System.out.println(validator.isValid("(())")); // 输出: true
System.out.println(validator.isValid("([)]")); // 输出: false
}
}
```
阅读全文