- Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
def backtrack(op,cl,prefix):
if op == 0 and cl == 0:
ans.append(prefix)
if op>0:
backtrack(op-1,cl,prefix+'(')
if op<cl :
backtrack(op,cl-1,prefix+')')
backtrack(n,n,"")
return ans
java:
class Solution {
public List<String> generateParenthesis(int n) {
List<String> list = new ArrayList<>();
backtrack(list,"",n,n);
return list;
}
public void backtrack(List<String>list,String prefix, int op,int cl){
if(op == 0 && cl ==0){
list.add(prefix);
}
if(op>0){
backtrack(list,prefix+'(',op-1,cl);
}
if(op<cl){
backtrack(list,prefix+')',op, cl-1);
}
}
}