括号所有有效组合
2016-05-05 11:48
267 查看
实现一种算法,打印n对括号的全部有效组合(左右括号正确配对)
核心思想:
1.左括号:只要左括号还没用完,就可以插入括号。
2.右括号:只要不造成语法错误,就可以插入右括号。即只要右括号比左括号还多,就会出现语法错误。
以上两个是并列条件,总结的代码如下:
核心思想:
1.左括号:只要左括号还没用完,就可以插入括号。
2.右括号:只要不造成语法错误,就可以插入右括号。即只要右括号比左括号还多,就会出现语法错误。
以上两个是并列条件,总结的代码如下:
import java.util.ArrayList; public class KuoHao { public static void addParen(ArrayList<String> list,int leftRem,int rightRem,char[] str,int count){ if(leftRem<0||leftRem>rightRem) return; if(leftRem==0&&rightRem==0){ String s=String.valueOf(str); list.add(s); }else{ if(leftRem>0){ str[count]='('; addParen(list, leftRem-1, rightRem, str, count+1); } if(rightRem>leftRem){ str[count]=')'; addParen(list, leftRem, rightRem-1, str, count+1); } } } public static ArrayList<String>generateParens(int count){ char[] str=new char[count*2]; ArrayList<String>list=new ArrayList<>(); addParen(list, count,count, str, 0); return list; } public static void main(String[] args) { ArrayList<String>list=generateParens(2); for(String i:list) System.out.println(i); } }
(()) ()()
相关文章推荐
- php遍历解析xml字符串的方法
- ajax学习笔记(一)
- 系统架构设计——设计模式之装饰者模式
- Spring+SpringMVC+MyBaties问题总结(二
- 安装java和hadoop的过程以及配置环境变量
- c++实验5—数组分离
- 大数据学习资源汇总
- linux系统LNMP环境下修改MYSQL数据库密码的方法
- linux cpufreq framework(3)_cpufreq core
- 银行卡验证代码交流
- oracle 数据按月份分类,并求其中某项值的总和
- AppCan开源案例:移动电商 APP《海外购》超详源码
- Android开发笔记(九十六)集合动画与属性动画
- apache commons io JDepend报告(2016-04-21更新)
- IOS9任务管理器特效的实现
- Windows下搭建Redis环境
- MySQL性能参数详解之Max_connect_errors 使用介绍
- Linux cpufreq framework(2)_cpufreq driver
- SpringMVC 技术详解 MVC简介
- 一些移动端浏览器的兼容性Bug