【发布时间】:2012-03-15 10:01:21
【问题描述】:
我想得到像字母表这样的字符串排列的特定组合。为了理解我,我将向您展示我使用的代码:
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"));
}
}
这段代码运行良好,我可以得到每个组合,我可以从列表中获取它,如果我需要第 5 个元素,我可以接收它。但是如果字符串是字母 ... ,则不起作用,它太大了。我必须做的是,从所有 26 个中获取特定元素,例如 1221-th!组合?
【问题讨论】:
标签: java cryptography