「ABCDE」などの文字列がある場合、2 つの組み合わせを取得する最良の方法は何ですか? そのようなタスクのための API はありますか?
すなわち
- 「AB」
- "交流"
- "広告"
- 「あい」
- "紀元前"
- 「BD」
- "なれ"
- "CD"
- 「CE」
- 「デ」
「ABCDE」などの文字列がある場合、2 つの組み合わせを取得する最良の方法は何ですか? そのようなタスクのための API はありますか?
すなわち
APIはありません。読むのに最適な情報源は、Knuth「TheArt of ComputerProgrammingVol1」または次のようなものです。
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
i+1疑似コード:
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 文字しかないため、両方の位置を入れ替えて、このプロセスの結果を生成されたペアに追加できます。3 つなどの組み合わせが必要な場合は、順列アルゴリズムを調べてください。