2016-06-11 3 views
0

Я хотел бы знать, как рекурсивно создать всю перестановку заданной строки.Создать всю перестановку строки в рекурсии в java

Скажет, что String a = "abcdefghijklmnopqrstxyz";.

Я хотел бы создать строку длиной 5 (например) из a использования рекурсию,

смысл:

  • ааааа
  • aaaab
  • aaaba
  • aaaca
  • zabfg

Заранее спасибо.

+0

Хорошо, у вас есть вопрос? –

+0

Это вопрос ... Как создать описанные перестановки только с помощью рекурсии. – Efi

+0

Наряду с этим решением распечатать только результаты длины 5 –

ответ

1

Прежде всего, просто сохраните все уникальные символы с помощью HashMap или около того, а затем переведите их в список, который мы будем называть символами, для удобства использования.

Ваш рекурсивный метод строится на строке. Когда эта строка достигает длины 5, вы закончите, и вы хотите сохранить ее. Вы можете вернуть строку или просто сохранить ее в глобальном списке.

В этом случае предположим, что ваш список называется перестановками.

void generatePermutation(String current) { 
    if (current.length == 5) { 
     permutations.add(current); 
    } else { 
     for (int i = 0; i < chars.size(); i++) { 
      generatePermutation(current + chars.get(i)); 
     } 
    } 
} 
+0

Спасибо, но мне не разрешено использовать для цикла, только рекурсия .. – Efi

+0

И мне нужно сгенерировать все возможные перестановки длины 5. В примере, который я дал, есть 5^26 перестановок. – Efi

+0

Без цикла for невозможно обойтись. –

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