22. 括号生成

二刷之后的代码简洁多了。
括号问题关键在于“合法括号匹配:当前左括号数大于等于右括号数”

class Solution {
    List<String> ans=new LinkedList<>();
    public List<String> generateParenthesis(int n) {
        //合法括号:当前左括号数大于等于右括号数
        dfs(0,0,n,"");
        return ans;

    }
    void dfs(int leftCnt,int rightCnt,int n,String path){
         if(leftCnt<rightCnt||leftCnt>n)return;
         if(rightCnt==n){
             if(leftCnt==n) 
                 ans.add(path);
            return;
         }
         dfs(leftCnt+1,rightCnt,n,path+"(");
         dfs(leftCnt,rightCnt+1,n,path+")"); 
    }
}

posted @ 2021-06-07 19:53  wsshub  阅读(43)  评论(0)    收藏  举报