平衡括号(一)——判断平衡括号

2018-10-31  本文已影响0人  旺叔叔

LeetCode_22_GenerateParentheses

题目分析:

首先什么是平衡括号--就是只有括号,而且"括得合法"的字符串。
题目让我们生成平衡括号,这里巧法就是,利用平衡括号的一个重要特点。
平衡括号,从"第一个字符开始"的"所有子串",满足"("个数大于等于")"个数。
可观察n=3的所有平衡括号
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

解法:

public static List<String> generateParenthesis(int n) {
    List<String> res = new ArrayList<String>();
    helper(n, n, "", res);
    return res;
}

/**
 * 从0开始的任何子串 left个数>=right个数 既是合法串
 */
public static void helper(int left, int right, String out, List<String> res) {
    if (left < 0 || right < 0 || left > right) return;
    if (0 == left && 0 == right) {
        res.add(out);
        return;
    }
    helper(left - 1, right, out + "(", res);
    helper(left, right - 1, out + ")", res);
}
上一篇下一篇

猜你喜欢

热点阅读