LeetCode 10.9 Generate Parentheses

本文介绍了一种生成所有有效括号组合的算法实现。通过深度优先搜索(DFS),该算法可以针对给定数量的括号对生成所有可能的有效括号序列。文章提供了完整的Java代码示例,展示了如何通过递归调用进行括号序列的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

"((()))", "(()())", "(())()", "()(())", "()()()"


import java.util.Iterator;

import java.util.Stack;

public class T5 {

public static void main(String[] args) {

T5 t=new T5(6);

t.DFS(0);

t.print();

}

Stack<int [] > ans=new Stack<>();

int n;

int[] f;

int pre=-1;

T5(int _n){

n=_n;

f=new int[n];

}

void DFS(int k){

if(k==n){

int[] arr=new int[n]; 

for(int i=0;i<n;i++){

arr[i]=f[i];

}

ans.add(arr);

}else{

for(int i=pre==-1?0:pre;i<n;i++){

if(k<=i){

pre=i;

f[k]=i+1;

DFS(k+1);

}

}

}

}

void print(){

int num=1;

Iterator<int[]> it = ans.iterator();

while(it.hasNext()){

System.out.println("======"+num+"=====");

int []temp=it.next();

String s="";

int l=n;

while(l-->0){

s+="(";

}

for(int i=temp.length-1;i>=0;i--){

s=s.substring(0, temp[i])+")"+s.substring(temp[i]);

}

System.out.println(s);

num++;

}

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值