[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的情况,这种情况显然只能加”}”。
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; };
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 只需四个步骤几行代码,即可快速实现直播弹幕功能
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- JavaScript 基础、进阶以及 Ubuntu 系统中的 JavaScript 开发调试工具
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法