想到了要用recursive 但是没有想清楚helper function要怎样传参
思想就是 记录还有几个left可以用 几个left需要闭合
并且要把list 和整个string传下去 不是每层都add到list 而是这个string结束 即没有可用的left 没有需要闭合的left的时候
public class Solution {
public List<String> generateParenthesis(int n) {
List<String> list = new ArrayList<String>();
add( list, "", n, 0);
return list;
}
void add ( List<String> list, String str, int left, int right ){
if ( left == 0 && right == 0) {
list.add(str);
str = "";
}
if ( left > 0)
add ( list, str + '(', left -1, right + 1);
if ( right > 0 )
add ( list, str + ')', left, right - 1);
}
}