1、题目
22. 括号生成 - 力扣(LeetCode) https://leetcode-cn.com/problems/generate-parentheses/
2、题解
本题主要是解决两个问题,第一步是得到n对括号的排列组合方式,这个必须将左右括号分开排列组合。不然就只有一种。这样的话只需要通过递归的方式将n个左右括号排列组合的可能全部形成String值,装到List中即可。第二步,是得到有效的括号,即先有一个左括号,才能有一个右括号。所以将递归方法中的判断条件从:
if(left>0){
getParenthesisResult(result,str+'(',left-1,right);
}
if(right>0){
getParenthesisResult(result,str+')',left,right-1);
}
改为:
if(left>0){
getParenthesisResult(result,str+'(',left-1,right);
}
if(right>left){
getParenthesisResult(result,str+')',left,right-1);
}
即可。
3、代码
//得到有效的括号的组合结果;
class Solution {
public List<String> generateParenthesis(int n) {
ArrayList<String> result = new ArrayList<>();
String str = new String();
getParenthesisResult(result,str,n,n);
return result;
}
private void getParenthesisResult(ArrayList<String> result, String str, int left, int right) {
if(left==0&&right==0){
result.add(str);
return;
}
if(left>0){
getParenthesisResult(result,str+'(',left-1,right);
}
if(right>left){
getParenthesisResult(result,str+')',left,right-1);
}
}
}
4、执行结果

本文详细解析了LeetCode上的括号生成问题,介绍了如何通过递归算法生成所有可能的括号组合,并筛选出有效的括号序列。通过调整递归条件,确保了生成的括号序列的正确性和有效性。
589

被折叠的 条评论
为什么被折叠?



