生成括号
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
样例
给定 n = 3
, 可生成的组合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"
解题
采用递归树的思想,当左括号数大于右括号数时可以加左或者右括号,否则只能加左括号,当左括号数达到n时,剩下全部添加右括号
public class Solution { /** * @param n n pairs * @return All combinations of well-formed parentheses */ public ArrayList<String> generateParenthesis(int n) { // Write your code here ArrayList<String> result = new ArrayList<String>(); if(n<=0) return result; int left = 0,right=0; String str=""; generateParenthesis(n,left,right,str,result); return result; } public void generateParenthesis(int n,int left,int right,String str ,ArrayList<String> result){ if(left == n){ for(int i=0;i< n- right;i++) str+=")"; result.add(str); return; } generateParenthesis(n, left+1, right,str+"(",result); if(left>right){ generateParenthesis(n, left, right+1,str+")",result); } } }
时间: 2024-11-05 12:23:59