Minimum Remove to Make Valid Parentheses(C++移除无效的括号)

解题思路:

(1)从前往后,从后往前,记录balance的值

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;
    }
};

猜你喜欢

转载自blog.csdn.net/coolsunxu/article/details/114668467