您的位置:首页 > 其它

[leetcode]Generate Parentheses

2014-05-27 15:40 399 查看
Generate Parentheses

题意:生成所有括号个数是n的,合法的括号排列。

解法:dfs生成括号。当生成数目=2*n时,判断左右括号数目是否相等,相等则合理,否则不合理。中间加一些剪枝,当左括号数=右括号数时,只添加做括号,当左括号数目>n时,直接剪枝掉。

import java.util.ArrayList;

public class Solution131 {
ArrayList<String>ans;
intn;
public ArrayList<String> generateParenthesis(int n) {
this.n=n;
ans=new ArrayList<String>();
if (n==0){
return ans;
}
if (n==1){
ans.add("()");
return ans;
}
dfs(1,"",0,0);
return ans;
}
privatevoid dfs(int x, String string, int left, int right) {
if(x==2*n+1){
if(left==right){
ans.add(string);
}
return;
}
if(left>n){
return;
}
if(left==right){
dfs(x+1,string+"(",left+1,right);
}else{
dfs(x+1,string+"(",left+1,right);
dfs(x+1,string+")",left,right+1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode