301. Remove Invalid Parentheses 我的没ac

来源:互联网 发布:windows屏幕水印 编辑:程序博客网 时间:2024/06/05 23:21

Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.

Note: The input string may contain letters other than the parentheses ( and ).

Examples:

"()())()" -> ["()()()", "(())()"]"(a)())()" -> ["(a)()()", "(a())()"]

")(" -> [""]

class Solution {public:    vector<string> removeInvalidParentheses(string s) {        vector<string> res;        if(s.empty()){            res.push_back(s);            return res;        }        for(int i=0;i<s.size();){            if(s[i]==')'){                string ss=s.substr(0,i);                ss+=s.substr(i+1,s.size()-i-1+1);                s=ss;            }                //return false;            else if(s[i]=='('){                break;            }            else i++;        }        for(int i=s.size()-1;i>=0;){            if(s[i]=='('){                string ss=s.substr(0,i);                ss+=s.substr(i+1,s.size()-i-1+1);                s=ss;            }                //return false;            else if(s[i]==')')                break;                        else i--;        }        int c_left=0,c_right=0;        for(int i=0;i<s.size();i++){            if(s[i]==')'){                c_right++;                            }            else if(s[i]=='('){                c_left++;            }        }        int dif=c_left-c_right;        if(dif==0){            res.push_back(s);            return res;        }        else if(dif>0){            bool first=false;            bool adj=false;            for(int i=0;i<s.size();i++){                if(first==false&&s[i]=='('){                    first=true;                                    }                else if(s[i]==')'){                    adj=false;                }                else if(s[i]=='('&&adj==false){                    string ss=s.substr(0,i);                    ss+=s.substr(i+1,s.size()-i-1+1);                    res.push_back(ss);                    adj=true;                                    }                            }            return res;        }        else if(dif<0){            bool first=false;            bool adj=false;            for(int i=s.size()-1;i>=0;i--){                if(first==false&&s[i]==')'){                    first=true;                                   }                else if(s[i]=='('){                    adj=false;                }                                else if(s[i]==')'&&adj==false){                    string ss=s.substr(0,i);                    ss+=s.substr(i+1,s.size()-i-1+1);                    res.push_back(ss);                    adj=true;                }            }            return res;        }        res.push_back(s);        return res;            }};


原创粉丝点击