您的位置:首页 > 编程语言 > Java开发

Leet Code 22 Generate Parentheses - 生成括号 - Java

2016-06-08 00:00 507 查看
摘要: Leet Code 22 Generate Parentheses - 生成括号 - Java

问题原始链接 https://leetcode.com/problems/generate-parentheses

给定n对括号,写一个方法生成所有格式正确的括号组合。

例如,给定 n = 3,结果集如下:

[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

括号组合有两部分组成,右边i个括号的全部组合,左边是n-i-1个括号组合再在外面加一对括号。

[code=language-java]
private static final List[] CACHE = new List[] { new ArrayList(),
Arrays.asList("()"), Arrays.asList("(())", "()()"),
Arrays.asList("((()))", "(()())", "(())()", "()(())", "()()()") };

public static List<String> generateParenthesis(int n) {
if (n <= 0) {
return new ArrayList<String>();
}
if (n > 0 && n <= 3) {
return CACHE
;
}
List<String> result = new ArrayList<String>();
for (int i = 0; i < n; i++) {
List<String> right = generateParenthesis(i);
List<String> left = generateParenthesis(n - i - 1);
if (right.isEmpty()) {
for (String l : left) {
result.add("(" + l + ")");
}
} else {
if (left.isEmpty()) {
for (String r : right) {
result.add("()" + r);
}
} else {
for (String l : left) {
for (String r : right) {
result.add("(" + l + ")" + r);
}
}
}
}
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息