一、生成括号问题(动态规划)
对于这类问题,只需要抓住一条准则:左括号必须大于等于右括号。
然后按照以下步骤进行即可求解出所有有效括号。
1.做好参数校验,即处理括号数为0或1的情况;
2.第一个必须添加左括号;
3.当左右括号数相等时,判断是否需要添加到结果集,且下一个必须添加左括号;
4.当左括号数大于右括号数时,分别进行添加左括号和右括号的递归。
代码
class Solution {
public List<String> generateParenthesis(int n) {
List<String>res=new ArrayList<String>();
if(n<1)return null;
else if(n==1){
res.add("()");
return res;
}
getParenthesis(n,1,0,"","(",res);
return res;
}
public void getParenthesis(int n,int left,int right,String sb,String str,List<String>res){
if(right&g