网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 794|回复: 0
打印 上一主题 下一主题

LeetCode真题-生成括号

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-8-11 16:32:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
"((()))", "(()())", "(())()", "()(())", "()()()"
输入:1
输出:["()"]
示例2
输入:2
输出:["(())","()()"]
代码实现:
import java.util.*;


public class Solution {
    /**
     *
     * @param n int整型
     * @return string字符串ArrayList
     */
    public ArrayList<String> generateParenthesis (int n) {
        // write code here
        ArrayList<String> result = new ArrayList<String>();
        generateCycle(n, 0, 0, "", result);
        return result;
    }
     
    public void generateCycle(int n, int left, int right, String s, ArrayList<String> res){
        if (right == n){
            res.add(s);
            return ;
        }
         
        if (left < n){
            generateCycle(n, left+1, right, s+'(', res);
        }
         
        if (left > right){
            generateCycle(n, left, right+1, s+')', res);
        }
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 15:48 , Processed in 0.031775 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表