class Solution {
public List<String> removeInvalidParentheses(String s) {
List<String> ans = new ArrayList<String>();
Set<String> currSet = new HashSet<String>();
currSet.add(s);
while (true) {
for (String str : currSet) {
if (isValid(str)) {
ans.add(str);
}
}
if (ans.size() > 0) {
return ans;
}
Set<String> nextSet = new HashSet<String>();
for (String str : currSet) {
for (int i = 0; i < str.length(); i ++) {
if (i > 0 && str.charAt(i) == str.charAt(i - 1)) {
continue;
}
if (str.charAt(i) == '(' || str.charAt(i) == ')') {
nextSet.add(str.substring(0, i) + str.substring(i + 1));
}
}
}
currSet = nextSet;
}
}
private boolean isValid(String str) {
char[] ss = str.toCharArray();
int count = 0;
for (char c : ss) {
if (c == '(') {
count++;
} else if (c == ')') {
count--;
if (count < 0) {
return false;
}
}
}
return count == 0;
}
}
相关文章
- 10-06[转]IntelliJ IDEA生成live template(代码模板) - 渡劫锦官城 - 博客园(转载请删除括号里的内容)
- 10-06Leetcode-5016 Remove Outermost Parentheses(删除最外层的括号)
- 10-06leetcode 1021. 删除最外层的括号(Remove Outermost Parentheses)
- 10-06LeetCode-1021:删除最外层的括号
- 10-06LeetCode #1021. Remove Outermost Parentheses 删除最外层的括号
- 10-06Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。文件的删除
- 10-06栈:删除最外层的括号
- 10-062021.10.27 力扣-每日一题-删除无效的括号
- 10-06LeetCode刷题301.删除无效括号
- 10-06301. 删除无效的括号