Мне нужно получить все комбинации строки длины k от заданных элементов. Например, дляОптимизация строковых комбинаций в Java
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;
}
Спасибо!
http://codereview.stackexchange.com/ – Tom
Это алгоритмы вопрос и не принадлежит к этому форуму. Вы должны спросить об этом в http://cs.stackexchange.com/ –
Это не вопрос алгоритма. Я разместил его на codereview, спасибо @Tom. – user1418018