アルファベットのような文字列の順列の特定の組み合わせを取得したいです。私は、私は5番目の要素が必要な場合、私は、リストからそれを取ることができ、うまく私は順列の特定の組み合わせを取得したいですか?
public class PermutationExample {
public static List<String> getPermutation(String input) {
List<String> collection = null;
if (input.length() == 1) {
collection = new ArrayList<String>();
collection.add(input);
return collection;
} else {
collection = getPermutation(input.substring(1));
Character first = input.charAt(0);
List<String> result = new ArrayList<String>();
for (String str : collection) {
for (int i = 0; i < str.length(); i++) {
String item = str.substring(0, i) + first
+ str.substring(i);
result.add(item);
}
String item = str.concat(first.toString());
result.add(item);
}
return result;
}
}
public static void main(String[] args) {
System.out.println(PermutationExample.getPermutation("ABCD"));
}
}
このコードは動作し、私はすべての組み合わせを取得することができます:私を理解するために、私はあなたに私が使用してコードを紹介しますそれを受け取ることができます。しかし、文字列がアルファベットの場合、動作しませんでした、それは大きすぎます。すべての2621から1221のような特定の要素を得るために、私は何をしなければなりません!組み合わせ?
はい、私は文字列のN番目の順列が必要ですが、私は問題をどのようにスローするか分からない: – Aleksiev