您的位置:首页 > 其它

LeetCode:Generating Parenthesis

2015-05-10 22:54 211 查看
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表示可以添加右括号,依次递归求得所有序列。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: