题目描述
思想
- 使用一个标志标count记左括号,碰到一个左括号就count++
- 如果在count为零的情况下碰到右括号,则此右括号直接删掉
- 在整个遍历完后,检查count是否为零,如果不为零的话,说明存在左括号多加入了结果的情况,则从最后一个左括号开始删掉左括号,直到count为零
代码实现
class Solution {
public String minRemoveToMakeValid(String s) {
Stack<Character> stack = new Stack<Character>();
int count = 0;
StringBuilder res = new StringBuilder();
int flag = 0;
for(int i = 0;i < s.length();i++){
if(s.charAt(i) == ')' && flag == 0){
continue;
}
if(s.charAt(i) == '('){
flag++;
}else if(s.charAt(i) == ')'){
flag--;
}
res.append(s.charAt(i));
}
while(flag != 0){
flag --;
res.deleteCharAt(res.lastIndexOf("("));
}
return res.toString();
}
}