您的位置:首页 > 其它

【Leetcode】Generate Parentheses (Backtracking)

2014-11-06 04:04 417 查看
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:

"((()))", "(()())", "(())()", "()(())", "()()()"

这道题的思路是记录左括号和右括号的剩余总数,然后凡是右括号比左括号剩余的少得(用的多的),就不合法,返回
这样当左右剩余括号都为0的时候,就是一组合法的括号序列

代码来自code_ganker

public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> result = new ArrayList<String>();
String item = "";
if (n <= 0)
return result;
helper(n, n, item, result);
return result;
}

public void helper(int lRemain, int rRemain, String item,
ArrayList<String> result) {
if (lRemain > rRemain)
return;
if (lRemain == 0 && rRemain == 0) {
result.add(item);
return;
}
if (lRemain > 0)
helper(lRemain - 1, rRemain, item + "(", result);
if (rRemain > 0)
helper(lRemain, rRemain - 1, item + ")", result);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: