Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254183
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-04-06 10:11:01

Generate Parentheses

 Total Accepted: 40282 Total Submissions: 124502My Submissions
Question Solution 


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:

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



import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;


public class GenerateParentheses {


public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.print(generateParenthesis(3));
//  Set set=new HashSet();
//    set.add(new Date());    //向列表中添加数据
//
//    set.add("apple");     //向列表中添加数据
//
//    set.add(new Socket());    //向列表中添加数据
//
//    int size=set.size();
//    System.out.println("Set集合的大小为:" + size);
//
//    set.clear();
//    set.add("fas");
//    System.out.println("执行clear方法后Set集合的大小为:" + set.size());
}
public static List generateParenthesis(int n) {
//       List result=new ArrayList();
//       List> total=new ArrayList>();
//       if(n<1)
//       return Collections.EMPTY_LIST;
//       result.add("()");
//       if(n==1){
//       return result;
//       }
//       
//       Set set=new HashSet();
//       total.add(result);
//       for(int i=1;i //      
//           for(String o:total.get(i-1))
//           {
//              set.add(e)
//           }
//          set=res;
//          
//           
//           }
//       
//      
//       Iterator it=set.iterator();
//           while(it.hasNext())
//           {
//               Object o=it.next();
//               result.add(""+o);
//              
//           }
//           
//           return result;
  List result=new ArrayList();
      StringBuilder cur=new StringBuilder();
      if(n<1)
      return Collections.EMPTY_LIST;
      dfs(result,cur,n,n);
      return result;
}
private static void dfs(List result, StringBuilder cur, int m,
int n) {
// TODO 自动生成的方法存根
if(m==0&&n==0){
result.add(cur.toString());
return;
}
StringBuilder sb=new StringBuilder(cur);
if(m>0){
cur.append("(");
dfs(result,cur, m-1, n);

}
cur=sb;
if(m0){
cur.append(")");
dfs(result, cur, m, n-1);

}


}


}

阅读(410) | 评论(0) | 转发(0) |
0

上一篇:java 小问题

下一篇:SingleNumber 2

给主人留下些什么吧!~~