您的位置:首页 > Web前端 > JavaScript

[leetcode javascript解题]Generate Parentheses

2016-12-21 21:30 381 查看
leetcode第22题”Generate Parenthese”描述如下:

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:

[

"((()))",

"(()())",

"(())()",

"()(())",

"()()()"

]


看到题第一想法依然是使用递归,思路基本是这样的,在字符串长度增加的过程中,字符串中”{“的数量肯定要始终大于等于”}”的数量。

所以定义left和right两个变量方便计数,初试为n,当left等于right时,显然此时只能添加”{“,当left小于right时,两者都可以添加。结束条件为left和right都为0,同时由于left始终小于等于right,所以还要额外判断仅当left为0的情况,这种情况显然只能加”}”。

/**
* @param {number} n
* @return {string[]}
*/
var add = function(left, right, stack, s) {
if (left === 0 && right === 0) {
stack.push(s);
return;
}
if (left === right) {
add(left - 1, right, stack, s + "(");
} else if (left === 0) {
add(left, right - 1, stack, s + ")");
} else {
add(left - 1, right, stack, s + "(");
add(left, right - 1, stack, s + ")");
}
};

var generateParenthesis = function(n) {
var stack = [];
add(n, n, stack, "");
return stack;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript leetcode 22题