美文网首页算法每日一刷
LeetCode算法题-22. 括号生成(Swift)

LeetCode算法题-22. 括号生成(Swift)

作者: entre_los_dos | 来源:发表于2019-10-13 11:13 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

    例如,给出 n = 3,生成结果为:

    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    

    方法1-1的时候,括号里面插入0个,2的时候,括号里面可以插入0个或者1个。详细如下

    n=0,"" ,>>>>> g(0) = ""
    n=1,(),括号里面插入0个 >>>>> g(1) = ( + g(0) + ) = ()
    n=2,()(),(())。括号里面插入0个或者1个 >>>>>
          g(2) = ( + g(0) + ) + g(1) = ()()
          g(2) = ( + g(1) +) + g(0) = (())

    func generateParenthesis(_ n: Int) -> [String] {
            var result = [String]()
            
            if n == 0 {
                result.append("")
            }else {
                for i in 0..<n {
                    
                    var leftArr = generateParenthesis(i)
                    var rightArr = generateParenthesis(n-1-i)
                    
                    for string1 in leftArr {
                        for string2 in rightArr {
                            
                            result.append("(" + string1 + ")" + string2)
                        }
                    }
                }
            }
            return result
        }
    

    相关文章

      网友评论

        本文标题:LeetCode算法题-22. 括号生成(Swift)

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