您的位置:首页 > 编程语言 > Java开发

[Leetcode] Generate Parentheses (Java)

2013-12-26 16:13 316 查看
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:

"((()))", "(()())", "(())()", "()(())", "()()()"

输出全括号匹配,DFS去做:

1)把"("看成+1,")"看成-1,temp为当前和,则要求temp>=0;

2)num保存当前"("数,不能超过n;

3)length为当前字符串长度。

import java.util.ArrayList;

public class GenerateParentheses {

public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> list = new ArrayList<String>();
dfs(2*n, "",list,0,0);
return list;
}
private void dfs(int length,String s,ArrayList<String> list,int temp,int num) {
if(s.length()==length)
list.add(s);
else {
if(num<length/2)
dfs(length, s+'(', list, temp+1,num+1);
if(temp>0){
dfs(length, s+')', list, temp-1,num);
}
}
}
public static void main(String[] args) {
int n = 3;
System.out.println(new GenerateParentheses().generateParenthesis(n));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: