объяснение
Две строки можно перетасовать, переставляя их буквы, чтобы сформировать новую строку, так же как две стопки карт можно перетасовать, чтобы сформировать одну стопку.
Например, строки HELLO
и WORLD
могут быть перемешаны, чтобы сформировать HWEOLRLLOD
, или HEWORLLLDO
, или, возможно, просто HELLOWORLD
.
Это не случайный порядок, если исходный порядок букв не сохранен. Например, D
in WORLD
не может появиться раньше R
после перетасовки. Это означает, что EHLLOWRDLO
, например, это не случайный случай, HELLO
и WORLD
, хотя он содержит все оригинальные буквы.
Строка - это тасовка близнецов, если она может быть образована путем тасования двух одинаковых струн. Например, ABACBDECDE
это тасование близнецов, потому что оно может быть сформировано путем тасования ABCDE
и ABCDE
. DBEACBCADE
это не тасовка близнецов, потому что она не может быть сформирована путем тасования двух одинаковых строк.
Детали программы
Если задана входная строка, выведите, 0
если она не является случайным образом двойников, и выведите одну из строк двойников, если это случайный случай двойников.
Вы можете предположить, что длина входной строки составляет от четырех до двадцати символов и целиком состоит из прописных буквенных символов. Он должен быть в состоянии запустить в течение разумного количества времени, скажем, менее 10 минут.
Это код гольф, поэтому выигрывает самое короткое решение.
Пример ввода / вывода
> ABACBDECDE
ABCDE
> DBEACBCADE
0
> FFFFFF
FFF
> FFGGG
0
> ABBA
0
> AABB
AB
> AABAAB
AAB
У меня есть пример (не в гольф) реализации .
FFGGG
чтобы сделать это последовательным.
that the input string has a length inclusively between four and twenty characters
и не говорит мне «никогда не доверяйте вводу пользователя!», «Никогда не доверяйте спецификациям!»