2012-04-18 70 views
1

如果我有一个字符串,请说“ABCDE”,获得两个组合的最佳方法是什么?有这样一个任务的API吗?如何获得Java中的不同组合

  1. “AB”
  2. “AC”
  3. “AD”
  4. “AE”
  5. “BC”
  6. “BD”
  7. “BE”
  8. “CD”
  9. “CE”
  10. “DE”
+0

据我所知,目前这个问题并没有内置API。你必须编写你自己的代码。 – Garbage 2012-04-18 13:13:15

回答

1
private static List<String> getCombinations(String input) { 
    ArrayList<String> result = new ArrayList<String>(); 
    int len = input == null ? 0 : input.length(); 
    for (int i = 0; i < len - 1; i++) { 
     for (int j = i + 1; j < len; j++) { 
      String combination = String.valueOf(input.charAt(i)) 
        + input.charAt(j); 
      System.out.println("adding: " + combination); 
      result.add(combination); 
     } 
    } 
    return result; 
} 

生成getCombinations("ABCDE");

adding: AB 
adding: AC 
adding: AD 
adding: AE 
adding: BC 
adding: BD 
adding: BE 
adding: CD 
adding: CE 
adding: DE 
0

1 + 1pseudocode:

String alphabet = "ABCDE"; 
    for(int i = 0; i < alphabet.getLength(); i++){ 
    for(int j = alphabet.getLength(); j > i; j--){ 
     System.out.println(alphabet.substring(i, i+1) + alphabet.substring(j, j+1)); 
    } 
    } 

如果您需要更多类似的组合: BA CA 等等,那么因为只有2个字母,您可以切换它们的位置并将此过程的结果附加到生成的对。如果你需要三个等的组合,那么看看排列算法。