leetcode 22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。

 

题解:

1.给一个数字n

2.生成左右括号匹配的字符串

3.结果有多个,以字符串数组方式输出

 

示例:

输入:n = 3

输出:[ "((()))",

       "(()())",

       "(())()",

       "()(())",

       "()()()"]

 

解题思路:

递归检查所有符合条件的字符组合

  • 无效字符组合---》左右剩余括号数量的比较(右括号用的多为无效组合)

  • 左右符号都用完---》找到一种有效括号组合方式

  • 左右括号都没用完---》深度遍历有效的字符组合

递归过程中记录有效括号组合

C/C++题解(点击蓝字阅读源码,或前往公众号回复“22”获取)

class Solution {

public:

    vector<string> generateParenthesis(int n) {

leetcode 22. 括号生成

Java题解(点击蓝字阅读源码,或前往公众号回复“22”获取)

class Solution {

    public List<String> generateParenthesis(int n) {

leetcode 22. 括号生成

Python题解(点击蓝字阅读源码,或前往公众号回复“22”获取)

class Solution(object):

    def generateParenthesis(self, n):

        """:type n: int:rtype: List[str]"""

leetcode 22. 括号生成

更多题解可前往公众号免费获取

leetcode 22. 括号生成

相关文章: