@eywsf

Как получить все одно и двух буквенные комбинации по порядку из слова?

Например, есть строка

String str = "program";

Необходимо получить все возможные комбинации, такие как:

  • p-r-o-g-r-a-m
  • p-r-o-g-r-am
  • p-r-o-g-ra-m
  • pr-og-r-am


ну и так далее.

Как это сделать на java? Или хотя бы общий алгоритм подскажите?

Сроку разбить не проблема, хоть по одному символу, хоть по два, например так

for (int i = 0; i < str.length()-1; i = i +2){
            String strTemp = str.charAt(i)+""+str.charAt(i+1);
              System.out.println(strTemp);
}


Но как получить (обойти) все возможные комбинации из одной и двух - непонятно, как запрограммировать.
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 3
Alexandroppolus
@Alexandroppolus
Самое простое рекуррентное соотношение:
Все раскладки по слову "program" - это, во первых, все раскладки для "rogram" с префиксом "p-", во вторых, все раскладки для "ogram" с префиксом "pr-". Ну и частные случаи слова из одной буквы и пустого. Вроде с таким подходом удобно будет применить StringBuffer
Ответ написан
solotony
@solotony
покоряю пик Балмера
p-r-o-g-r-a-m (0)

pr-o-g-r-a-m (1)
p-ro-g-r-a-m
p-r-og-r-a-m
p-r-o-gr-a-m
p-r-o-g-ra-m
p-r-o-g-r-am

pr-og-r-a-m (2)
pr-o-gr-a-m
pr-o-g-ra-m
pr-o-g-r-am
p-ro-gr-a-m
p-ro-g-ra-m
p-ro-g-r-am
p-r-og-ra-m
p-r-og-r-am
p-r-o-gr-am

pr-og-ra-m (3)
pr-og-r-am
pr-o-gr-am
p-ro-gr-am


я бы делал с использование рекурсии
Ответ написан
@sand3001
Всего по немногу
7 букв, если в битах представить это 1111111, если перед первой буквой "-" не предусмотрено, то отсекаем её, получается 111111, допустим 0 - это "-" перед буквой, тогда циклом от 0 до 63 перебираем варианты, например: 110101 = pro-gr-am
000000 = p-r-o-g-r-a-m
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы