leetcode第21题--Generate Parentheses
2024-08-20 22:27:03
problem:
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
一想到要用递归来解决的就有点头疼,因为还没有好好系统的回顾一下递归,总觉得判断什么时候返回很困难。这个是这样的,用l和r分别记录剩下的左括号和右括号。当l和r都为零的时候就是输出了一种正确的可能了。前提是任何时刻,剩下的右括号要比左括号多或者相等,否则返回。其次,r和l都为零的时候,就把temp str记录下来。代码和部分注释如下:
class Solution {
private:
void subGe(int l, int r, string t, vector<string> &ans)
{
if(l > r) // 左代表‘(’右代表‘)’,剩下的左括号要比右括号少才合法
return ;
if (l == && r == )
{ans.push_back(t);return;} // 这是t已经是2n个字符了
if(l > )
subGe(l - , r, t + "(", ans); // 输出一个(,则左括号减一
if(r > )
subGe(l, r - , t + ")", ans);
}
public:
vector<string> generateParenthesis(int n)
{
vector<string> ans;
ans.clear();
if (n <= )
return ans;
subGe(n, n, "", ans);// 初始时,左右括号都是n个
return ans;
}
};
最新文章
- php curl 多线程方法
- 手势响应 ,避免点击多个cell同时响应同一手势多次,只响应第一个cell
- Java 的静态代理 动态代理(JDK和cglib)
- C# DateTime 格式化 奇怪问题!
- 一&#183;创建Linux服务器(基于阿里云)
- Linux常用命令_(文件操作)
- 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量
- spring集成quartz scheduler
- Android百度地图开发04之POI检索
- [Hive - Tutorial] Built In Operators and Functions 内置操作符与内置函数
- java常见内存溢出(OOM)
- 持续集成环境Gitlab-CI的官方安装过程解析
- soj3129: windy和水星 -- 水星数学家 2
- 使用iperf测试网卡吞吐性能
- 批量压缩 css js 文件 包含多个文件 自动识别
- E2040 Declaration terminated incorrectly - System.ZLib.hpp(310) ZLIB_VERSION
- Docker学习之安装mysql
- JavaScript调用wcf服务,并且处理返回的字典集合
- jupyter安装,修改登录密码,启动
- JQuery攻略(二) Jquery手册