问题描述(原题链接)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。
代码:
class Solution {
List<String> list = new ArrayList<>();
public List<String> generateParenthesis(int n) {
//回溯法
StringBuffer s = new StringBuffer();
dfs(list,s,0,0,n);
return list;
}
private void dfs(List<String> list,StringBuffer s,int open,int close,int len){
if(s.length()==2*len){
list.add(s.toString());
return;
}
if(open<len){
s.append("(");
dfs(list,s,open+1,close,len);
s.deleteCharAt(s.length()-1);
}
if(open>close){
s.append(")");
dfs(list,s,open,close+1,len);
s.deleteCharAt(s.length()-1);
}
}
}