0
点赞
收藏
分享

微信扫一扫

《LeetCode力扣练习》第22题 括号生成 Java

星河出山 2022-03-11 阅读 57

《LeetCode力扣练习》第22题 括号生成 Java



一、资源

  • 题目:

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

    示例 1:

    输入:n = 3
    输出:["((()))","(()())","(())()","()(())","()()()"]

    示例 2:

    输入:n = 1
    输出:["()"]

    提示:

    1 <= n <= 8
    
  • 上代码(经过线上OJ测试)
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created with IntelliJ IDEA.
     *
     * @author : DuZhenYang
     * @version : 2022.03.01  18:01:48
     * description :
     */
    public class LeetCode {
        public List<String> generateParenthesis(int n) {
            List<String> result =new ArrayList<>();
            backTrack(result,new StringBuffer(),0,0,n);
            return result;
        }
    
        private void backTrack(List<String> result, StringBuffer stringBuffer, int left, int right, int n) {
            if (stringBuffer.length()==n*2){
                result.add(stringBuffer.toString());
                return;
            }
    
            if (left<n){
                stringBuffer.append('(');
                backTrack(result,stringBuffer,left+1,right,n);
                stringBuffer.deleteCharAt(stringBuffer.length()-1);
            }
    
            if (right<left){
                stringBuffer.append(')');
                backTrack(result,stringBuffer,left,right+1,n);
                stringBuffer.deleteCharAt(stringBuffer.length()-1);
            }
        }
    }
    
举报

相关推荐

0 条评论