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:
"((()))", "(()())", "(())()", "()(())", "()()()"Solution:
public class Solution {
public List<String> generateParenthesis(int n) {
List<String> solution = new ArrayList<String>();
generateParenthesis(n, 0, 0, new StringBuilder(), solution);
return solution;
}
public void generateParenthesis(int n, int openParentheses, int closeParentheses, StringBuilder sb, List<String> solution)
{
if(closeParentheses == n)
{
solution.add(sb.toString());
}
if(openParentheses<n)
{
sb.append('(');
generateParenthesis(n, openParentheses+1, closeParentheses, sb, solution);
sb.deleteCharAt(sb.length()-1);
}
if(closeParentheses<openParentheses)
{
sb.append(')');
generateParenthesis(n, openParentheses, closeParentheses+1, sb, solution);
sb.deleteCharAt(sb.length()-1);
}
}
}
No comments :
Post a Comment