描述
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
“((()))”, “(()())”, “(())()”, “()()()”, “()(())”
import java.util.ArrayList;public class RecureBrackets {public void recure(int left, int right, String tmp, ArrayList res, int n){// 左右括号都使用完毕if(left == n && right == n){res.add(tmp);return;}//使用一次左括号if(left < n){recure(left+1,right,tmp+"(",res,n);}// 使用右括号个数必须少于左括号if(right < n && left > right){recure(left,right+1,tmp+")",res,n);}}public ArrayList generateParenthesis (int n) {ArrayList res = new ArrayList<>();recure(0,0,"",res,n);return res;}public static void main(String[] args) {}
}
下一篇:电脑删除的文件如何找回?