您的位置:首页 > 其它

LeetCode: 22. Generate Parentheses

2017-09-17 21:44 459 查看
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对括号能够形成的所有合法括号。

分析:合法括号即从前向后遍历时,遇到左括号加一,遇到右括号减一,在任何位置count值必然大于等于一。因此,可以维持一个count值和record数组以及index,count值表示从0到index的和,record记录前index位置的括号情况,index就是下标。

代码如下:

class Solution {
public List<String> generateParenthesis(int n) {
List<String> result=new ArrayList<String>();
makeString(result,0,new int[2*n],0,n);
return result;
}
public void makeString(List<String> result,int count,int[]record,int index,int n){
if(index>=2*n-1&&count==0){
StringBuilder s=new StringBuilder();
for(int i=0;i<2*n;i++)
if(record[i]==1)
s.append("(");
else
s.append(")");
result.add(s.toString());
}
if(index<2*n){
record[index]=1;
makeString(result,count+1,record,index+1,n);
if(count>0){
record[index]=-1;
makeString(result,count-1,record,index+1,n);
}
}

}

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