diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/README.md" index 80e7c55cfd3ff..53f40338c844e 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/README.md" @@ -188,6 +188,31 @@ var generateParenthesis = function (n) { }; ``` +#### Swift + +```swift +class Solution { + func generateParenthesis(_ n: Int) -> [String] { + var ans = [String]() + dfs(0, 0, n, "", &ans) + return ans + } + + private func dfs(_ left: Int, _ right: Int, _ n: Int, _ t: String, _ ans: inout [String]) { + if left == n && right == n { + ans.append(t) + return + } + if left < n { + dfs(left + 1, right, n, t + "(", &ans) + } + if right < left { + dfs(left, right + 1, n, t + ")", &ans) + } + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/Solution.swift" new file mode 100644 index 0000000000000..ebda6543e2334 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267/Solution.swift" @@ -0,0 +1,20 @@ +class Solution { + func generateParenthesis(_ n: Int) -> [String] { + var ans = [String]() + dfs(0, 0, n, "", &ans) + return ans + } + + private func dfs(_ left: Int, _ right: Int, _ n: Int, _ t: String, _ ans: inout [String]) { + if left == n && right == n { + ans.append(t) + return + } + if left < n { + dfs(left + 1, right, n, t + "(", &ans) + } + if right < left { + dfs(left, right + 1, n, t + ")", &ans) + } + } +} \ No newline at end of file