Eliminación mínima para hacer paréntesis válidos (C ++ elimina los paréntesis no válidos)

Ideas de resolución de problemas:

(1) De adelante hacia atrás, de atrás hacia adelante, registre el valor del saldo

class Solution {
public:
    string minRemoveToMakeValid(string s) {
        int balance = 0;
        int i=0;
        while(i<s.length()) {
           if(s[i]=='(') {
                balance++;
               i++;
            }
            else if(s[i]==')') {
                balance--;
                if(balance<0) {
                    balance=0;
                    s.erase(s.begin()+i);
                } else i++;
            } else i++; 
        }
        
        if(balance==0) return s;
        i=s.length()-1;
        while(i>=0) {
           if(s[i]=='(') {
                balance--;
                if(balance==0) {
                   s.erase(s.begin()+i);
                   return s;
                } else {
                    s.erase(s.begin()+i);
                    i--;
                }
            } else i--;
        }
        
        return s;
    }
};

 

Supongo que te gusta

Origin blog.csdn.net/coolsunxu/article/details/114668467
Recomendado
Clasificación