[LeetCode]Generate Parentheses@python
2018-01-21 15:30
302 查看
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,针对一个长度为2n的合法排列,第1到2n个位置都满足如下规则:左括号的个数大于等于右括号的个数。所以,我们就可以按照这个规则去打印括号:假设在位置k我们还剩余left个左括号和right个右括号,如果left>0,则我们可以直接打印左括号,而不违背规则。能否打印右括号,我们还必须验证left和right的值是否满足规则,如果left>=right,则我们不能打印右括号,因为打印会违背合法排列的规则,否则可以打印右括号。如果left和right均为零,则说明我们已经完成一个合法排列,可以将其打印出来。通过深搜,我们可以很快地解决问题
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
思路:写出所有可能,第一想法dfs,针对一个长度为2n的合法排列,第1到2n个位置都满足如下规则:左括号的个数大于等于右括号的个数。所以,我们就可以按照这个规则去打印括号:假设在位置k我们还剩余left个左括号和right个右括号,如果left>0,则我们可以直接打印左括号,而不违背规则。能否打印右括号,我们还必须验证left和right的值是否满足规则,如果left>=right,则我们不能打印右括号,因为打印会违背合法排列的规则,否则可以打印右括号。如果left和right均为零,则说明我们已经完成一个合法排列,可以将其打印出来。通过深搜,我们可以很快地解决问题
class Solution(object): def generateParenthesis(self, n): """ :type n: int :rtype: List[str] """ ans = [] def isvalid(s="", left=0, right=0): if len(s) == 2*n: ans.append(s) if left < n: isvalid(s+"(", left+1, right) if right<left: isvalid(s+")", left, right+1) isvalid() return ans
相关文章推荐
- [LeetCode] 022. Generate Parentheses (Medium) (C++/Java/Python)
- [LeetCode]题解(python):022-Generate Parentheses
- 【Leetcode】【python】Generate Parentheses
- [leetcode]Generate Parentheses 生成圆括号 python实现
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- LeetCode--Generate Parentheses(括号组合排列)Python
- [leetcode]Generate Parentheses @ Python
- leetcode Generate Parentheses python
- LeetCode 22 Generate Parentheses (C,C++,Java,Python)
- [leetcode 22]Generate Parentheses-----n对括号可以组成的括号对序列
- Leetcode 暴力 Generate Parentheses
- LeetCode 22 Generate Parentheses 卡特兰数问题,有待进一步学习
- [LeetCode 22] Generate Parentheses
- LeetCode - Generate Parentheses
- Leetcode:Generate Parentheses
- Leetcode-Generate Parentheses(递归)
- LeetCode解题报告—— 4Sum & Remove Nth Node From End of List & Generate Parentheses
- [*leetcode 22] Generate Parentheses
- LeetCode | Generate Parentheses(生成括号)
- leetcode-22 Generate Parentheses