LeetCode 22 Generate Parentheses DFS
Given \(n\) pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
Solution
考虑 \(DFS\) 来递归: 用 \(numR\) 表示右括号数目,起始为 \(n\), \(numL\) 表示左括号可用的数目。当 \(numR=numL=0\) 表示全部用完,此时将字符串加入答案。
点击查看代码
class Solution {
private:
    vector<string> ans;
    
    void dfs(vector<string>& ans, int numL, int numR, string cur){
        if(numL==0 && numR==0){
            ans.push_back(cur); return;
        }
        if(numR>0)dfs(ans, numL, numR-1, cur+")");
        if(numL>0)dfs(ans, numL-1, numR+1, cur+"(");
    }
    
public:
    vector<string> generateParenthesis(int n) {
        dfs(ans, n, 0, "");
        return ans;
    }
};
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号