2014-10-23 2 views
0

Мне нужно получить все комбинации строки длины 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; 
} 

Спасибо!

+0

http://codereview.stackexchange.com/ – Tom

+0

Это алгоритмы вопрос и не принадлежит к этому форуму. Вы должны спросить об этом в http://cs.stackexchange.com/ –

+0

Это не вопрос алгоритма. Я разместил его на codereview, спасибо @Tom. – user1418018

ответ

0

Попробуйте сделать это без recursation ... видеть объяснение здесь.

recursion versus iteration

Я надеюсь, что это поможет вам

Смежные вопросы