import java.util.ArrayList;
public class Solution {
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> list=new ArrayList<String>();
StringBuffer str=new StringBuffer();
if(n==0) return list;
recursive(0,0,n,list,str);
return list;
}
public void recursive(int left,int right,int n,ArrayList<String> list,StringBuffer str){
if(left<right) return ;
if(left==n&&right==n){
String tmp=str.toString();
list.add(tmp);
return;
}
if(left<n){
StringBuffer str2=new StringBuffer(str);
str2.append('(');
recursive(left+1,right,n,list,str2);
}
if(right<n){
StringBuffer str2=new StringBuffer(str);
str2.append(')');
recursive(left,right+1,n,list,str2);
}
}
}
迭代求出括号所有配对情况 left right分别为当前待加入的括号个数。若left right均为0了则表示均已配对,输出当前序列。若left>0表示还有未加入左括号,故将其入。如果right>0并且left>right表示可以添加右括号,依次递归求得所有序列。
LeetCode:Generating Parenthesis
最新推荐文章于 2024-03-12 16:36:33 发布