博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Generate Parentheses
阅读量:6266 次
发布时间:2019-06-22

本文共 1208 字,大约阅读时间需要 4 分钟。

Generate Parentheses

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:

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

 

public class Solution {

  private ArrayList<String> array;
  private int count;
  private int number;
  public ArrayList<String> generateParenthesis(int n) {
    array = new ArrayList<String>();
    number = n;
    StringBuilder s = new StringBuilder();//"(";
    s.append('(');
    recurse(s, 1, 0);
    return array;
  }
  private void recurse(StringBuilder s, int leftTotal, int rightTotal){
    if(leftTotal == number){
      int total = 2*number;
      StringBuilder sb = new StringBuilder(total);
      for(int i = 0; i < s.length(); i++){
        sb.append(s.charAt(i));
      }
      while(sb.length() < total){
        sb.append(')');
      }
      count++;
      array.add(sb.toString());
      return;
    }
    if(leftTotal > rightTotal){
      recurse(s.append(')'), leftTotal, rightTotal+1);
      s.deleteCharAt(s.length()-1);
    }
    recurse(s.append('('), leftTotal+1, rightTotal);
    s.deleteCharAt(s.length()-1);
  }
}

转载于:https://www.cnblogs.com/boole/p/3641508.html

你可能感兴趣的文章
java基础(十一) 枚举类型
查看>>
Dependency Injection-依赖注入详解
查看>>
设计师图解TCP连接过程
查看>>
这其实是一个求助的文章
查看>>
你必须掌握的 RESTful 后端接口设计参考书
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
兼容iOS 10:配置获取隐私数据权限声明
查看>>
Docker 使用笔记
查看>>
jest && vue
查看>>
前端每周清单第 36 期:深入 Vue 2.5 类型增强、Puppeteer 端到端测试、PayPal 跨域套装...
查看>>
iOS - Swift 面向协议编程(二)
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
原生js轮盘抽奖实例分析(幸运大转盘抽奖)
查看>>
知否?知否?情人眼里出代码
查看>>
DataBinding数据绑定基本讲解
查看>>
15 分钟无门槛构建服务器性能监控系统
查看>>
【JS第19期】设计模式-简单工厂模式
查看>>
Flask之旅: 快速上手
查看>>
Android图片加载开源库深度推荐,安利Fresco
查看>>
聊聊flink的MemoryPool
查看>>