括號所有有效組合
阿新 • • 發佈:2018-12-31
實現一種演算法,列印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); } }
(())
()()