22. Generate Parentheses
一、题目
1、审题
2、分析:
给出数字 n,求所有正常的闭合的括号字符串的集合。
二、解答
1、思路:
利用循环不能解决问题,考虑用递归实现;
a、当 '(' >= ‘)’ 时,才是正常情况;否则不能闭合,即结束此次递归;
b、依次加入 '('、‘)’,当 ')' == '(',时,是一种满足的情况,加以记录,即结束此次递归;
public List<String> generateParenthesis(int n) { List<String> resultList = new ArrayList<>(); generateParenthesisHelper(resultList, n, "", 0, 0); return resultList; } private void generateParenthesisHelper(List<String> resultList, int n, String target, int left, int right) { if(left < right || left > n || right > n) return; if(left == n && right == n) { resultList.add(target); return; } generateParenthesisHelper(resultList, n, target + "(", left + 1, right); generateParenthesisHelper(resultList, n, target + ")", left, right + 1); }