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

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

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来做
l 记录剩余 '(' 数量
r 记录可以添加的 ')' 数量
只有当附加一个 '(' 后,才可以附加 ')'.
计数原则是:
初始时,l = n, r = 0.
str添加一个 '(', 则 l 减少 1,且可用 ')' 加1.
str添加一个 ')',则 r 减少 1。
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class 
Solution {
public
:
    
vector<string> generateParenthesis(
int 
n) {
        
vector<string> res;
        
dfs(res,
""
,n,0);
        
return 
res;
    
}
     
    
void 
dfs(vector<string> &res, string str, 
int 
l, 
int 
r){
        
if
(l == 0 && r ==0){
            
res.push_back(str);
            
return
;
        
}
         
        
if
(l > 0) dfs(res, str+
'('
, l - 1, r + 1);
        
if
(r > 0) dfs(res, str+
')'
, l, r - 1);
    
}
};

转载于:https://www.cnblogs.com/zhxshseu/p/a44db0600fe2adbb31aa501a69be6cec.html

你可能感兴趣的文章
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>
【android】使用handler更新UI
查看>>
mochiweb 源码阅读(十五)
查看>>
前端面试中的常见的算法问题
查看>>
计算机语言的基本理论
查看>>
nodejs流之行读取器例子
查看>>
批量文件重命名工具
查看>>
简单说一下UWP中的JumpList
查看>>
unity将object[]或者string对象转换成枚举enum
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.19. 范围函数和操作符...
查看>>
以太坊系列之六: p2p模块--以太坊源码学习
查看>>
使用scikit-learn解决文本多分类问题(附python演练)
查看>>