题解 | #括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

import java.util.*;

public class Solution { /** * * @param n int整型 * @return string字符串ArrayList */ public ArrayList generateParenthesis (int n) {

    if (n == 0) {
        return new ArrayList<String>();
    }

    ArrayList<String> list = new ArrayList<String>();
    backTrace("", 0, 0, n, list);
    return list;
}

public void backTrace (String currentStr, int leftNum, int rightNum, int n, ArrayList<String> list) {

    if (2 * n == currentStr.length()) {
        list.add(currentStr);
        return;
    }

    //如果左括号的数量 < n 因为下标是从0开始的 所以不能=n
    if (leftNum < n) {
        backTrace(currentStr + "(", leftNum+1, rightNum, n, list);
    }

    //如果右括号的数量 < leftNum 左括号的数量因为下标是从0开始的 所以不能=leftNum
    if (rightNum < leftNum) {
        backTrace(currentStr + ")", leftNum, rightNum+1, n, list);
    }
}

}

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

图书馆的蜂:你好好想想自己之前干的事情,把简历的内容包装一下。大学生的水平都差不多,但是你要有心。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务