22.給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的並且有效的括號組合。
例如,給出 n = 3,生成結果爲:
示例:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
【思路】
這個題使用遞歸法,但是題目要求是有效的括號。
【實現代碼】
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res=new ArrayList<String>();
int left=n,right=n;
String item="";
generate(item,left,right,res);
return res;
}
private static void generate(String item,int left,int right,List<String> res){
//當n個左右括號都使用完了之後,則跳出結果
if(left==0 && right==0){
res.add(item);
return;
}
//還剩下左括號個數不爲0
if(left>0){
generate(item+"(",left-1,right,res);
}
//還剩下右括號大於剩下左括號個數
if(left<right){
generate(item+")",left,right-1,res);
}
}
}