22 Generate Parentheses

来源:互联网 发布:mac 开启acl 编辑:程序博客网 时间:2024/06/11 10:11
public class Solution {  List<String> res = new ArrayList<String>(); Set<String> tmp = new HashSet<String>(); public List<String> generateParenthesis(int n) { if(n==0) return res; String str = new String(); dfs(n, n, str); res.addAll(tmp);     return res; }  void dfs(int leftNum, int rightNum, String curStr){ if(leftNum==0){ for(int v=0;v<rightNum;++v){ curStr += ')'; }if(!tmp.contains(curStr)){tmp.add(curStr);} }  for(int i=1;i<=leftNum;++i){ StringBuffer t1 = new StringBuffer(curStr); for(int j=1;j<=i;++j){ t1.append('('); }  //这需要注意,只要现有字符串中')'的个数小于等于'('的个数就可以 for(int k=1;k<=rightNum-leftNum+i;++k){ t1.append(')'); dfs(leftNum-i, rightNum-k, new String(t1)); } } }}

0 0
原创粉丝点击