zoukankan      html  css  js  c++  java
  • Generate Parentheses

    [解题思路]
    典型的递归。一步步构造字符串。当左括号出现次数<n时,就可以放置新的左括号。当右括号出现次数小于左括号出现次数时,就可以放置新的右括号。

    public class Solution {
        public ArrayList<String> generateParenthesis(int n) {
            ArrayList<String> result = new ArrayList<String>();
            StringBuilder builder = new StringBuilder();
            generate(result, builder, n, n);
            return result;
        }
        
        public void generate(ArrayList<String> result, StringBuilder builder, int start, int end){
            if(start == 0 && end == 0){
                result.add(builder.toString());
                return;
            }
            
            if(start > 0){
                builder.append('(');
                generate(result, builder, start-1, end);
                builder.deleteCharAt(builder.length()-1);
            }
            
            if(start < end){
                builder.append(')');
                generate(result, builder, start, end -1);
                builder.deleteCharAt(builder.length()-1);
            }
        }
    }

    注意:

    builder.deleteCharAt(builder.length()-1); 
    eg : n=2 时 builder 先是 “(( ))” ,添加到 result ArrayList中去
    然后 delete 成为 “(”, 此时 end > start, 然后 builder 成为 “()” 在成为 “()()”


  • 相关阅读:
    SQL一条语句统计记录总数及各状态数
    火狐登录国际账户
    HTML基础笔记
    增强for、lambda for、stream 遍历List 结束方法 or 跳过循环本次循环
    nginx
    前端问题总结
    Node.js
    Actuator
    ssh免密登录实现及Python实现
    【Mac渗透测试】之SQL注入Demo
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3533653.html
Copyright © 2011-2022 走看看