我需要从给定的元素中获得长度为k的字符串的所有组合。例如,对于
char[] elements = {'a', 'b', 'c'}
k = 4产出应是: aaaa、aaab、.、cccc。现在我有了下面的代码,它给出了适当的结果,但速度不够快。我的代码可以改进什么?
public static ArrayList<String> printAllKLength(char[] elements, int nrElements, int patternLength) {
ArrayList<String> patternVariations = new ArrayList<String>();
patternVariations = printAllKLengthRec(elements, "", nrElements, patternLength, patternVariations);
return patternVariations;
}
public static ArrayList<String> printAllKLengthRec(char[] elements, String prefix, int nrElements, int patternLength, ArrayList<String> patternVariations) {
if (patternLength == 0) {
patternVariations.add(prefix);
//System.out.println(prefix);
return patternVariations;
}
for (int i = 0; i < nrElements; ++i) {
String newPrefix = prefix + elements[i];
printAllKLengthRec(elements, newPrefix, nrElements, patternLength - 1, patternVariations);
}
return patternVariations;
}谢谢!
发布于 2014-10-23 20:11:08
发布于 2014-10-23 19:55:31
您可以使用动态规划方法(记忆)。非常相似的东西:
http://www.geeksforgeeks.org/print-all-possible-combinations-of-r-elements-in-a-given-array-of-size-n/
https://stackoverflow.com/questions/26536122
复制相似问题