2
public List<String> removeInvalidParentheses(String s) {3
List<String> ans = new ArrayList<>();4
HashSet<String> set = new HashSet<String>();6
int minBracket = removeBracket(s);7
getAns(s, minBracket, set, ans);12
public void getAns(String s, int minBracket, HashSet<String> set, List<String> ans) {13
if (set.contains(s)) return;17
if (minBracket == 0) {18
int remove = removeBracket(s);19
if (remove == 0) ans.add(s);23
for (int i = 0; i < s.length(); i++) {24
if (s.charAt(i) != '(' && s.charAt(i) != ')') continue;25
String L = s.substring(0, i);26
String R = s.substring(i + 1);28
if (!set.contains(L + R)) getAns(L + R, minBracket - 1, set, ans);32
public int removeBracket(String s) {33
Stack<Character> stack = new Stack<>();35
for (int i = 0; i < s.length(); i++) {38
if (x == '(') stack.push(x);40
if (!stack.isEmpty() && stack.peek() == '(') stack.pop();