您的位置:首页 > 其它

Generate Parentheses

2015-11-05 19:08 288 查看
题目名称

Generate Parentheses—LeetCode链接

描述

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:

“((()))”, “(()())”, “(())()”, “()(())”, “()()()”

分析

  小括号串是一个递归结构,跟单链表、二叉树等递归结构一样,首先想到用递归。一步步构造字符串。当左括号出现次数< n 时,就可以放置新的左括号。当右括号出现次数小于左括号出现次数时,就可以放置新的右括号。

C++代码

class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
if(n>0)
generate(n,"",0,0,res);
return res;
}
void generate(int n, string s, int l, int r, vector<string> &res) {
if(l==n) {
res.push_back(s.append(n-r,')'));
return;
}
generate(n,s+"(",l+1,r,res);
if(l>r)
generate(n,s+")",l,r+1,res);
}
};


总结

  代码是参考别人的,递归还不是很熟悉,需要多多练习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode