Java求解添加最少括号数问题的具体代码以及实例,例如,“(}(}”最少要添加4个括号变成合法的,即变为“(){}(){}”
时间: 2023-06-11 20:06:25 浏览: 114
下面是求解添加最少括号数问题的 Java 代码:
```java
import java.util.Stack;
public class MinimumAddToMakeParenthesesValid {
public static int minimumAddToMakeParenthesesValid(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.isEmpty() && stack.peek() == '(') {
stack.pop();
} else {
count++;
}
}
}
return count + stack.size();
}
public static void main(String[] args) {
String s = "({}()";
System.out.println(minimumAddToMakeParenthesesValid(s)); // output: 1
}
}
```
上述代码中,我们使用了一个栈来记录左括号,遇到左括号入栈,遇到右括号判断栈顶是否是相应的左括号,如果是则弹出栈顶元素,否则需要加上一个右括号使其匹配。最后将栈中剩余的元素个数加上需要添加的右括号个数即为答案。
例如,“(}(}”需要添加 4 个括号变成合法的,“(){}(){}”中的括号对与输入字符串中的括号对应,因此最少需要添加 4 个括号。
阅读全文