// "(" 进栈
// ")" 两种情况: 栈为空, 所以必须加个"("
// 栈不为空, 是否匹配的上
class Solution {
public boolean match(char a, char b) {
if (a == '(' && b == ')')
return true;
return false;
}
public int minAddToMakeValid(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 (stack.isEmpty()){
cnt++;
continue;
}
char c = stack.pollLast();
if (!match(c, s.charAt(i))) {
cnt += 2;
}
}
}
if (!stack.isEmpty())
cnt += stack.size();
return cnt;
}
}
921. 使括号有效的最少添加 栈
栈的应用:检查括号的有效性
最新推荐文章于 2022-10-04 21:19:26 发布
该博客探讨了一个使用栈解决编程问题的例子,即如何检查一个字符串中的括号是否有效。通过遍历输入字符串,将左括号入栈,遇到右括号时与栈顶的左括号匹配。如果匹配失败或栈为空但遇到右括号,需要增加计数器。最后,栈中剩余的左括号数量即为需要添加的最小括号数。此算法在验证代码中的括号平衡性方面非常实用。

707

被折叠的 条评论
为什么被折叠?



