题目:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
解析:
但是要考虑不合法的情况:
代码:
class Solution {
public List<String> generateParenthesis(int n) {
List<String> ans = new ArrayList<>();
getAns("", n, n, ans);
return ans;
}
//当前还可以放置左括号的数量left,以及当前还可以放置右括号的数量right
private void getAns(String item, int left, int right, List<String> ans) {
if(left==0 && right==0){
ans.add(item);
return;
}
if(left>0){
getAns(item+'(',left-1,right,ans);
}
if(right>left){
getAns(item+')',left,right-1,ans);
}
}
}