Skip to content

Commit 88e2115

Browse files
committed
Runtime: 42 ms (Top 72.6%) | Memory: 44.48 MB (Top 39.7%)
1 parent 5d362b3 commit 88e2115

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Runtime: 42 ms (Top 72.6%) | Memory: 44.48 MB (Top 39.7%)
2+
3+
class Solution {
4+
public List<String> removeInvalidParentheses(String s) {
5+
List<String> ans=new ArrayList<>();
6+
HashSet<String> set=new HashSet<String>();
7+
8+
int minBracket=removeBracket(s);
9+
getAns(s, minBracket,set,ans);
10+
11+
return ans;
12+
}
13+
14+
public void getAns(String s, int minBracket, HashSet<String> set, List<String> ans){
15+
if(set.contains(s)) return;
16+
17+
set.add(s);
18+
19+
if(minBracket==0){
20+
int remove=removeBracket(s);
21+
if(remove==0) ans.add(s);
22+
return;
23+
}
24+
25+
for(int i=0;i<s.length();i++){
26+
if(s.charAt(i)!='(' && s.charAt(i)!=')') continue;
27+
String L=s.substring(0,i);
28+
String R=s.substring(i+1);
29+
30+
if(!set.contains(L+R)) getAns(L+R,minBracket-1,set,ans);
31+
}
32+
}
33+
34+
public int removeBracket(String s){
35+
Stack<Character> stack=new Stack<>();
36+
37+
for(int i=0;i<s.length();i++){
38+
char x=s.charAt(i);
39+
40+
if(x=='(') stack.push(x);
41+
else if(x==')'){
42+
if(!stack.isEmpty() && stack.peek()=='(') stack.pop();
43+
else stack.push(x);
44+
}
45+
}
46+
return stack.size();
47+
}
48+
}

0 commit comments

Comments
 (0)