Кто-то дал нам строку, но все символы в скобках были заменены на обычные, и мы не знаем, какие или даже сколько их было. Все, что мы знаем, это то, что если бы L1,L2,L3,...,LN
были разные виды левых скобок и R1,R2,R3,...,RN
были разные соответствующие виды правых скобок, причем все они отличались друг от друга (2N разных символов скобок), строка была бы действительной, если бы она была одной из (+ - нормальная конкатенация строк):
L1+X+R1
,L2+X+R2
...,,LN+X+RN
гдеX
допустимая строка,X+Y
гдеX
и гдеY
допустимы строки,Любой отдельный символ, который не является символом скобки.
Пустая строка
Мы знаем, что они начали с правильной строки, прежде чем сменили скобки, и они не изменили их на символы, которые уже существовали в строке. По крайней мере одна пара существовала для каждой скобки. Можете ли вы восстановить, какие символы изначально были парами левой и правой скобок (найти Li
и Ri
выполнить заданные условия)?
Выведите пары символов, которые были в скобках. Например, если на (){}[]
самом деле это были символы в скобках, вы можете вывести (){}[]
или {}[]()
или [](){}
, и т. Д. Для строки может быть несколько способов сделать это, вам нужно только вернуть один из них, чтобы не было присвоения скобок с большим количеством пар (см. Примеры). Обратите внимание, что выходная строка всегда должна иметь четную длину.
Примеры:
abcc
- c
не может быть скобкой, поскольку нет другого символа с двумя вхождениями, но ab
может быть парой скобок, так что вы бы точно вывели ab
.
fffff
- любая строка, содержащая не более одного символа, не может иметь скобок, поэтому вы должны вернуть пустую строку или ничего не выводить.
aedbedebdcecdec
- эта строка не может иметь никаких скобок, потому что есть 1 a, 2 bs, 3 cs, 4 ds и 5 es, поэтому два символа не встречаются одинаковое количество раз, что является обязательным условием для использования скобок.
abcd
- возможные присвоения ab
, cd
, abcd
, cdab
, adbc
, bcad
, ac
, ad
, bc
и bd
, (а также пустые уступки, что все они имеют) , но вы должны вернуть один из самых длинных заданий, так что вы должны вернуться abcd
, cdab
, adbc
или bcad
.
aabbcc
, abc
- они оба имеют ab
, ac
и bc
как действительные пары. Вы должны вернуть одну из этих пар, не важно, какая.
abbac
- a и b имеют одинаковое количество символов, но на самом деле они не могут работать, поскольку один из них встречается слева и справа от всех вхождений другого. Ничего не вернуть
aabcdb
- cd
и ab
точные две пары кронштейнов, так что выход либо cdab
или abcd
.
abcdacbd
- только одна пара может быть достигнута сразу, но ab
, ac
, bd
, cd
, и ad
все из возможных пар вы можете вернуться. Независимо от того , какая пара вы выбираете, он имеет случай , когда один другой персонаж находится в нем, который запрещает любые другие пары, за исключением случая ad
, когда другие пары bc
и cb
не представляется возможным в одиночку либо, и поэтому не может быть возможным с ad
.
Это код гольф, поэтому выигрывает самый короткий код в байтах. Ввод из STDIN, если это возможно для вашего языка. Если это невозможно, укажите способ ввода в своем ответе.
abcd
выводadbc
также будет приемлемым, верно?