java
官方思路
就相当于是从第一个字符是啥开始编(回溯),,,
public boolean find(char[] cur) {
int count=0;
for(char i:cur) {
if(i=='(') {
count++;
}
else {
count--;
if(count<0)return false;
}
}
return (count==0);
}
public void solve(char[] cur,int pos,List<String> res) {
if(pos==cur.length) {
if(find(cur)) {
res.add(new String(cur));
}
}
else {
cur[pos]='(';
solve(cur, pos+1, res);
cur[pos]=')';
solve(cur, pos+1, res);
}
}
public List<String> generateParenthesis(int n) {
List<String>anStrings=new ArrayList<String>();
solve(new char[2*n], 0, anStrings);
return anStrings;
}