题目
https://leetcode.com/problems/generate-parentheses/
leetcode:22. Generate Parentheses 生成括号对
描述
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
import java.util.*;
class Solution {
public List<String> generateParenthesis(int n) {
List<String> result=new ArrayList<>();
backTrack(n,result,new StringBuilder(),0,0);
return result;
}
private void backTrack(int n,List<String> result,StringBuilder sb,int openCount,int closeCount) {
if(sb.length()==2*n){
result.add(sb.toString());
return;
}
if(openCount<n){
backTrack(n,result,sb.append("("),openCount+1,closeCount);
sb.deleteCharAt(sb.length()-1);
//openCount--;
}
if(closeCount<openCount){
backTrack(n,result,sb.append(")"),openCount,closeCount+1);
sb.deleteCharAt(sb.length()-1);
//closeCount--;
}
}
}