2016-03-16 55 views
-3

我與Java玩,我的問題是:如何獲得的X字符的所有可能的序列從n個字符在Java中的字符串

我有n個字符,例如一個字符串abcd,我怎樣才能得到這個字符串中所有可能的x字符序列?與「序列」我的意思是,我只對那些尊重原始字符串中字符順序的組合感興趣。

因此,舉例來說,如果我找的字符串中的2個字符序列ABCD我想只獲得

AB,AC,AD,BC,BD,CD。

我對所有其他可能的組合(如da,cb等)不感興趣,因爲它們不尊重原始字符串中字符的順序。

有什麼建議嗎?

+0

你嘗試過這麼遠嗎?作爲一個建議:把你的代碼放到你的問題中,這表明你已經完成了*某件事*來開始解決問題。你應該能夠處理一些相當簡單的情況:一個零長度的字符串,一個包含單個字符的字符串,一個包含兩個字符的字符串。然後,如何從多字符串中獲取單個字符的序列。 – spencer7593

+0

問題不在於如何處理特定情況(一系列嵌套循環就足夠了),而是如何動態處理問題,即如何從n字符字符串中獲取x字符序列。 爲此,我不得不承認我沒有代碼可以向我們推薦目標.. – yamayama

+0

是不是每個序列的第一個字符都要從字符串中返回單個字符?你有代碼能夠讓你獲得每個序列的第一個字符嗎?一旦你有了序列的第一個字符,是不是下一個問題得到序列的下一個字符?這不是真的只是同樣的問題......用更短的字符串? (我懷疑你得到這個問題的答案將會是你已經可以做的代碼。) – spencer7593

回答

0

問題可以通過兩個循環來解決。你迄今爲止做了什麼來自己解決它?

public static void print(String str) { 
     for (int i = 0; i < str.length(); i++) { 
      char curChar = str.charAt(i); 
      for (int j = i + 1; j < str.length(); j++) { 
       char otherChar = str.charAt(j); 
       System.out.println(new String(new char[] { curChar, otherChar })); 
      } 
     } 
    } 
+0

正如我所說的,問題並不是解決具體情況,而是有一個解決方案可以動態地處理n個序列字符,而不僅僅是例子和你的答案中的2個字符序列。 – yamayama

0

看看這個:

TreeSet<String> set = new TreeSet<String>(); 
final String placeHolder = "ignore me 'cause toElement parameter of subSet() is exclusive"; 
    set.add("a"); 
    set.add("b"); 
    set.add("c"); 
    set.add("d"); 
    set.add(placeHolder); 
    for (String ch : set) { 
     Set<String> subSet = set.subSet(ch, placeHolder); 
     if (subSet.size() > 1) { 
      for (String subCh : subSet) { 
       if (!ch.equals(subCh)) { 
        System.out.println(ch + subCh); 
       } 
      } 
     } 
    } 
相關問題