Java求解添加最少括号数的问题
时间: 2024-01-28 08:04:40 浏览: 26
这个问题可以通过使用栈来解决。具体步骤如下:
1. 定义一个栈,用于存储左括号。
2. 遍历字符串中的每个字符。
3. 如果当前字符是左括号,将其压入栈中。
4. 如果当前字符是右括号,判断栈顶元素是否是左括号。
5. 如果栈顶元素是左括号,则将栈顶元素弹出。
6. 如果栈顶元素不是左括号,则需要在当前位置添加一个左括号,将其压入栈中。
7. 遍历完字符串后,栈中剩余的左括号需要在字符串末尾添加相应数量的右括号。
下面是Java代码实现:
```java
public static String addParentheses(String s) {
Stack<Character> stack = new Stack<>();
int count = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(') {
stack.push(c);
} else if (c == ')') {
if (!stack.empty() && stack.peek() == '(') {
stack.pop();
} else {
count++;
stack.push('(');
}
}
}
StringBuilder sb = new StringBuilder(s);
while (!stack.empty()) {
sb.append(')');
stack.pop();
}
while (count-- > 0) {
sb.insert(0, '(');
}
return sb.toString();
}
```
该方法的时间复杂度为O(n),其中n是字符串的长度。