[LeetCode] 22. Generate Parentheses 生成括号
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
给一个数字n,生成所有长度为2n配对正确的括号组合。
使用递归Recursion一步步构造字符串,当左括号出现次数<n
时,就可以放置新的左括号。当右括号出现次数小于左括号出现次数时,就可以放置新的右括号。
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class Solution { public ArrayList<String> generateParenthesis( int n) { ArrayList<String> res = new ArrayList<String>(); if (n <= 0 ) return res; helper(res, "" , n, n); return res; } public void helper(ArrayList<String> result, String current, int left, int right) { if (left == 0 && right == 0 ) result.add(current); if (left > 0 ) helper(result, current + "(" , left - 1 , right); if (right > left) helper(result, current + ")" , left, right - 1 ); } } |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Solution: # @param an integer # @return a list of string def generateParenthesis( self , n): result = [] self .generateParenthesisRecu(result, "", n, n) return result def generateParenthesisRecu( self , result, current, left, right): if left = = 0 and right = = 0 : result.append(current) if left > 0 : self .generateParenthesisRecu(result, current + "(" , left - 1 , right) if left < right: self .generateParenthesisRecu(result, current + ")" , left, right - 1 ) |
C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution { public : vector<string> generateParenthesis( int n) { vector<string> res; generateParenthesisDFS(n, n, "" , res); return res; } void generateParenthesisDFS( int left, int right, string out, vector<string> &res) { if (left > right) return ; if (left == 0 && right == 0) res.push_back(out); else { if (left > 0) generateParenthesisDFS(left - 1, right, out + '(' , res); if (right > 0) generateParenthesisDFS(left, right - 1, out + ')' , res); } } }; |
类似题目:
[LeetCode] 20. Valid Parentheses 合法括号
[LeetCode] 32. Longest Valid Parentheses 最长有效括号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构