题解:Remove Invalid Parentheses

来源:互联网 发布:xampp php版本切换 编辑:程序博客网 时间:2024/06/05 20:57

题目如下:

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:bool judge(string s) {    int flag = 0;    for(int i = 0; i < s.size(); i++) {        if (s[i] == '(') flag++;else if (s[i] == ')') {            if (flag > 0) flag--;            else            return false;        }    }    if (flag == 0) return true;    else    return false;}    vector<string> removeInvalidParentheses(string s) {    vector<string> result;        queue<string> q;    q.push(s);    while(!q.empty()) {    bool flag = false;        unordered_set<string> se;        int size = q.size();        for(int i = 0; i < size; i++) {            string q0 = q.front();            if(judge(q0)) {                result.push_back(q0);                flag = true;            }        q.pop();        if(!flag) {            for(int l = 0; l < q0.size(); l++) {                if(q0[l] == '(' || q0[l] == ')') {                string t = q0.substr(0, l) + q0.substr(l + 1);                if(se.find(t) == se.end()) {                            se.insert(t);                            q.push(t);                    }                }            }        }    }        if(flag)        return result;    }}};



0 0
原创粉丝点击