《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); } } }