1. 程式人生 > >括號所有有效組合

括號所有有效組合

實現一種演算法,列印n對括號的全部有效組合(左右括號正確配對)

核心思想:

       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);
	}
}

(())
()()