# 删除无效的括号

<p>给你一个由若干括号和字母组成的字符串 <code>s</code> ，删除最小数量的无效括号，使得输入的字符串有效。</p>

<p>返回所有可能的结果。答案可以按 <strong>任意顺序</strong> 返回。</p>

<p> </p>

<p><strong>示例 1：</strong></p>

<pre>
<strong>输入：</strong>s = "()())()"
<strong>输出：</strong>["(())()","()()()"]
</pre>

<p><strong>示例 2：</strong></p>

<pre>
<strong>输入：</strong>s = "(a)())()"
<strong>输出：</strong>["(a())()","(a)()()"]
</pre>

<p><strong>示例 3：</strong></p>

<pre>
<strong>输入：</strong>s = ")("
<strong>输出：</strong>[""]
</pre>

<p> </p>

<p><strong>提示：</strong></p>

<ul>
	<li><code>1 <= s.length <= 25</code></li>
	<li><code>s</code> 由小写英文字母以及括号 <code>'('</code> 和 <code>')'</code> 组成</li>
	<li><code>s</code> 中至多含 <code>20</code> 个括号</li>
</ul>


## template

```cpp
#include <bits/stdc++.h>
using namespace std;

class Solution
{
public:
    vector<string> removeInvalidParentheses(string s)
    {
        vector<string> ans;
        rm(move(s), ans, {'(', ')'}, 0, 0);
        if (ans.empty())
            return {""};
        return ans;
    }

    void rm(string s, vector<string> &ans, vector<char> brackets, int sea_i, int del_i)
    {
        int sta = 0;
        for (int i = sea_i; i < s.size(); i++)
        {
            if (s[i] == brackets[0])
                sta++;
            else if (s[i] == brackets[1])
            {
                sta--;
                if (sta < 0)
                {
                    for (int j = del_i; j <= i; j++)
                    {
                        if (s[j] == brackets[1] && (j == del_i || s[j - 1] != brackets[1]))
                        {
                            string new_s = s.substr(0, j) + s.substr(j + 1);
                            rm(move(new_s), ans, brackets, i, j);
                        }
                    }
                    return;
                }
            }
        }

        reverse(s.begin(), s.end());
        if (brackets[0] == '(')
            rm(move(s), ans, {brackets[1], brackets[0]}, 0, 0);
        else
            ans.push_back(move(s));
    }
};


```

## 答案

```cpp

```

## 选项

### A

```cpp

```

### B

```cpp

```

### C

```cpp

```