Java求解添加最少括号数问题的具体代码以及实例
时间: 2023-06-11 20:06:39 浏览: 81
添加最少括号数问题可以使用栈来解决,具体代码如下:
```java
import java.util.Stack;
public class MinParentheses {
public static int minAddToMakeValid(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 (stack.isEmpty()) {
count++;
} else {
stack.pop();
}
}
}
return count + stack.size();
}
public static void main(String[] args) {
String s = "(()))";
int res = minAddToMakeValid(s);
System.out.println(res);
}
}
```
上述代码的主要思路是遍历字符串中的每一个字符,如果是左括号就将其入栈,如果是右括号就将栈顶元素出栈,如果栈为空则需要添加一个左括号使其匹配,计数器加一。遍历完成后,如果栈中还有元素,则需要添加右括号使其匹配,计数器加上栈中元素个数即为最少需要添加的括号数。
例如,对于输入字符串"(()))",运行上述代码的输出结果为2,表示最少需要添加2个括号才能使其成为一个匹配的括号序列。
阅读全文