难度 中等
这道题不太友好,输出的括号顺序和答案不一样也判为错误。不过这个方法的执行效率不高,不过看了题解效率也没高到哪里去,先过掉。
public List<String> generateParenthesis(int n) {
if(n < 1){
return null;
}
List<String> mList = new ArrayList<String>();
mList.add("()");
for(int i = 2; i <= n; i++){
mList = getCurParenthesis(mList);
}
return mList;
}
public List<String> getCurParenthesis(List<String> last){
List<String> curList = new ArrayList<String>();
int k = 0;
for(int i = 0; i < last.size(); i++){
String str1 = last.get(i) + "()";
curList.add(k++, str1);
String str2 = "()"+last.get(i);
if(str1 != null && !str1.equals(str2)){
curList.add(k++, str2);
}
String str3 = "(" + last.get(i) + ")";
curList.add(k++, str3);
}
return curList;
}