// "(" 进栈
// "))" 两种情况: 栈为空, 添加一个'('计数+1 不为空直接弹出
// ")" 两种情况:
// 栈为空, 所以必须加个"()" 计数+2
// 栈不为空, 必须加个')' 计数+1
// 最后统计栈中'('的数量
class Solution {
public boolean match(char a, char b) {
if (a == '(' && b == ')')
return true;
return false;
}
public int minInsertions(String s) {
ArrayDeque<Character> stack = new ArrayDeque<>();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.addLast(s.charAt(i));
}else if (s.charAt(i) == ')' && i + 1 < s.length() && s.charAt(i + 1) ==')'){
i++;
if (stack.isEmpty()){
cnt++;
continue;
}
stack.pollLast();
}else {
if (stack.isEmpty()) {
cnt+=2;
continue;
}
stack.pollLast();
cnt++;
}
}
if (!stack.isEmpty())
cnt += stack.size() * 2;
return cnt;
}
}
1541. 平衡括号字符串的最少插入次数 栈
最新推荐文章于 2024-08-09 10:09:13 发布