2013-11-09 110 views
-1

我有一個的ArrayList如何列出值可能在java中的字符串組合?

List value = new ArrayList(); 

此ArrayList是值= {A,B,C,d}

我已經使用此ArrayList

所需的輸出需要組合到字符串:ABCD, bcd,acd,abd,abc,cd,bd,bc,ad,ac,ab,a,b,c,d,null

如果可能?那麼,請給我的代碼....

這是我的代碼,但並不完美

import java.util.ArrayList; 
import java.util.List; 
public class PossibleCombination { 

public static void main(String[] args) { 




    List segList = new ArrayList(); 
    for(int i=65;i<70;i++){ 
     segList.add((char)i); 

    } 
    int segSize = segList.size(); 
    int[][] a = new int[segSize][2]; 
    int i; 

    for(i=0; i<= segSize-1; i++) 
    { 

     a[i][0] = 0; 
     a[i][1] = 1; 

    } 

    boolean b1 = true; 
     int t =0; 
    while(b1) 
    { 
     StringBuffer stb = new StringBuffer(); 
     for(i=0;i<segSize; i++) 
     { 
      if(a[i][0]==0) 
      stb.append(segList.get(i)); 
     } 

     System.out.println(stb); 

     if(t>=a.length){ 
      t=0; 
     } 
     int Pos=t; 
     while(a[Pos][0]>=a[Pos][1]) 
     { 
      if(Pos<segSize-1) 
       Pos++; 
      else 
       break; 
     } 
     a[Pos][0]++; 
     Pos--; 
     while(Pos>=0) 
     { 
      if(a[Pos][0]>0) 
      { 
       a[Pos][0]--; 
       break; 
      } 
      Pos--; 
     } 
     t++; 

     if(a[segSize-1][0]> a[segSize-1][1]){ 
      b1 = false; 
     } 
    } 
} 

}

+1

是的!必然是!現在,我們可以幫助你,你有什麼嘗試? –

+0

請分享您迄今嘗試使用的代碼 –

+1

請考慮如何自己完成此操作,編寫一些代碼,如果無法解決問題,請向我們顯示您的代碼並提出問題。人們不會爲你做功課 - 這樣,你就不會學到任何東西。 – Jesper

回答

0

是的,這是絕對有可能。但是,它當然需要指數時間。

我將離開實際的實施給你,但這裏有一些提示。

最簡單的方法是遞歸地執行此操作,但這會非常快速地佔用大量堆棧空間。

做到這一點的另一種方法是通過某種形式的呼吸優先展開結果列表。這可以用FIFO隊列迭代地完成。

+0

謝謝Syd Kerckhove ..但我需要一個簡單的和大寫的代碼 –

0
List<String[]> value = new ArrayList<String[]>(); 
String[] item = {"a","b","c"}; 
value.add(item); 
+0

這是產生我見過的所有可能的組合的最短路徑... – aga

相關問題