美文网首页
删除无效的括号

删除无效的括号

作者: xialu | 来源:发表于2021-10-27 23:58 被阅读0次

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-invalid-parentheses

题目描述:

给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。
返回所有可能的结果。答案可以按 任意顺序 返回。

示例 1:

输入:s = "()())()"
输出:["(())()","()()()"]

示例 2:

输入:s = "(a)())()"
输出:["(a())()","(a)()()"]

示例 3:

输入:s = ")("
输出:[""]

代码实现:
class Solution {
    Set<String> set = new HashSet<>();
    int n, max, len;
    String s;
    public List<String> removeInvalidParentheses(String _s) {
        s = _s;
        n = s.length();
        int l = 0, r = 0;
        for (char c : s.toCharArray()) {
            if (c == '(') l++;
            else if (c == ')') r++;
        }
        max = Math.min(l, r);
        dfs(0, "", 0);
        return new ArrayList<>(set);
    }
    void dfs(int u, String cur, int score) {
        if (score < 0 || score > max) return ;
        if (u == n) {
            if (score == 0 && cur.length() >= len) {
                if (cur.length() > len) set.clear();
                len = cur.length();
                set.add(cur);
            }
            return ;
        }
        char c = s.charAt(u);
        if (c == '(') {
            dfs(u + 1, cur + String.valueOf(c), score + 1);
            dfs(u + 1, cur, score);
        } else if (c == ')') {
            dfs(u + 1, cur + String.valueOf(c), score - 1);
            dfs(u + 1, cur, score);
        } else {
            dfs(u + 1, cur + String.valueOf(c), score);
        }
    }
}


相关文章

  • 删除无效的括号

    题目描述:删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) ...

  • 删除无效的括号

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove...

  • 301. 删除无效的括号

    【Description】删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明: 输入可能包含...

  • 301. 删除无效的括号

    这道题我个人认为比较经典,里边的思路值得学习一开始我用回溯的思路没搞出来,参考网友的写了一版。。。

  • 301. 删除无效的括号

    解法

  • 力扣 301 删除无效的括号

    题意:给定一个字符串找出删除最少非法字符串的所有组合 思路: 遍历括号,找出合法的括号个数 利用递归,遍历每一个子...

  • 【LeetCode】301. 删除无效的括号

    给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答...

  • 移除无效的括号

    题目: 给你一个由 '('、')' 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 '(' 或者 ')...

  • AFNetworking.framework Command /

    尝试解决方法: clean项目,重跑,无效 DerivedData删除,重跑,无效 删除钥匙串重复证书,重跑,无效...

  • Android studio 清除无效资源,无效引用,无效代码

    删除无效资源删除无效资源 @源地址:http://blog.csdn.net/byszy/article/deta...

网友评论

      本文标题:删除无效的括号

      本文链接:https://www.haomeiwen.com/subject/rmymaltx.html