美文网首页
力扣22 - 括号生成

力扣22 - 括号生成

作者: gaookey | 来源:发表于2020-08-31 19:17 被阅读0次

    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。

    示例:
    输入:n = 3
    输出:[
    "((()))",
    "(()())",
    "(())()",
    "()(())",
    "()()()"
    ]

    var parenthesis = [String]()
    
    func generateParenthesis(_ n: Int) -> [String] {
        generate(0, 0, n, "")
        return parenthesis
    }
    
    func generate(_ left: Int, _ right: Int, _ n: Int, _ s: String) {
        
        if left == n && right == n {
            parenthesis.append(s)
            return
        }
        
        if left < n {
            generate(left + 1, right, n, s + "(")
        }
        
        if left > right {
            generate(left, right + 1, n, s + ")")
        }
    }
    
    //["((()))", "(()())", "(())()", "()(())", "()()()"]
    generateParenthesis(3)
    

    相关文章

      网友评论

          本文标题:力扣22 - 括号生成

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