zoukankan      html  css  js  c++  java
  • leetcode 22. Generate Parentheses

    题目内容

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
    
    Example:
    For example, given n = 3, a solution set is:
    
    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    
    

    分析过程

    • 题目归类:
      递归删除题目
    • 题目分析:
      每次加入一个值,之后需要删除掉
    • 边界分析:
      • 空值分析
      • 循环边界分析
    • 方法分析:
      • 数据结构分析
      • 状态机
      • 状态转移方程
      • 最优解
    • 测试用例构建

    代码实现

    class Solution {
        List<String> list = new ArrayList<>();
        StringBuilder sb = new StringBuilder();
        public List<String> generateParenthesis(int n) {
            if(n<=0)
                return list;
            if (n==1){
                list.add("()");
                return list;
            }
            return parenthesis(n,0);
            
        }
        public List<String> parenthesis(int n,int flag){
            if(n==0&&flag==0){
                list.add(new String(sb+""));
                return list;
            }
            if(n!=0){
                sb.append("(");
                parenthesis(n-1,flag+1);
                sb.delete(sb.length()-1,sb.length());
            }
            if(flag!=0){
                sb.append(")");
                parenthesis(n,flag-1);
                sb.delete(sb.length()-1,sb.length());
            }
            return list;
    }
    }
    

    效率提高

    拓展问题

  • 相关阅读:
    Shell 数组
    Shell 中的中括号用法总结
    设置Linux可以查看历史命令(history)的执行时间
    jasypt 对 配置文件密码进行加密处理
    今日进度
    今日进度
    今日进度
    今日进度
    今日进度
    每周总结
  • 原文地址:https://www.cnblogs.com/clnsx/p/12332679.html
Copyright © 2011-2022 走看看