0
点赞
收藏
分享

微信扫一扫

数据结构与算法:括号生成

苦茶如歌 2022-11-19 阅读 110


描述
给出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<String> generateParenthesis (int n) {
ArrayList<String> res = new ArrayList<>();

recure(0,0,"",res,n);
return res;
}

public static void main(String[] args) {

}
}


举报

相关推荐

0 条评论