Minimum Remove to Make Valid Parentheses——leetcode

805 阅读1分钟

题目描述

思想

  • 使用一个标志标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();
        
    }
}