Qualcuno ci ha dato una stringa, ma tutti i caratteri simili a parentesi sono stati cambiati in quelli normali e non sappiamo quale, o anche quanti ce ne fossero. Tutto ciò che sappiamo è che se L1,L2,L3,...,LN
fossero diversi tipi di parentesi sinistre e R1,R2,R3,...,RN
fossero differenti tipi corrispondenti di parentesi quadre, tutte distinte (2N caratteri parentesi distinte), una stringa sarebbe valida se fosse una delle (+ è la normale concatenazione di stringhe):
L1+X+R1
,,L2+X+R2
...,,LN+X+RN
doveX
è una stringa valida,X+Y
, doveX
eY
sono stringhe valide,Qualsiasi carattere singolo che non sia un carattere parentesi.
La stringa vuota
Sappiamo che hanno iniziato con una stringa valida prima che cambiassero le parentesi e non li hanno cambiati in nessun carattere già esistente nella stringa. Almeno una coppia esisteva anche per ogni parentesi. Riesci a ricostruire quali personaggi erano originariamente coppie di parentesi destra e sinistra (trova le seguenti condizioni Li
e Ri
seguenti)?
Stampa le coppie di caratteri tra parentesi. Ad esempio, se in (){}[]
realtà fossero caratteri di parentesi quadre, potresti produrre (){}[]
o {}[]()
o [](){}
, ecc. Potrebbero esserci più modi per farlo per una stringa, devi solo restituirne uno in modo tale che non ci sia assegnazione di parentesi con più coppie (vedi esempi). Si noti che la stringa di output deve sempre avere una lunghezza pari.
Esempi:
abcc
- c
non può essere una parentesi, poiché non ci sono altri caratteri con due ricorrenze, ma ab
può essere una coppia di parentesi, quindi si produrrà esattamente ab
.
fffff
- qualsiasi stringa con al massimo un carattere non può avere parentesi, quindi restituiresti la stringa vuota o non restituiresti nulla.
aedbedebdcecdec
- questa stringa non può avere parentesi perché ci sono 1 a, 2 bs, 3 cs, 4 ds e 5 es, quindi non ci sono due caratteri lo stesso numero di volte, che è necessario avere parentesi.
abcd
- possibili assegnazioni sono ab
, cd
, abcd
, cdab
, adbc
, bcad
, ac
, ad
, bc
e bd
, (così come l'assegnazione vuota, che tutti hanno), ma è necessario restituire uno dei compiti più lunghe, quindi è necessario tornare abcd
, cdab
, adbc
, o bcad
.
aabbcc
, abc
- questi hanno entrambi ab
, ac
e bc
come coppie valide. Devi restituire una di queste coppie, non importa quale.
abbac
- aeb hanno lo stesso numero di caratteri, ma in realtà non possono funzionare, poiché uno di essi si verifica sia a sinistra che a destra di tutte le occorrenze dell'altro. Non restituire nulla.
aabcdb
- cd
e ab
sono le due coppie di parentesi esatte, quindi output cdab
o abcd
.
abcdacbd
- solo una coppia può essere raggiunto in una sola volta, ma ab
, ac
, bd
, cd
, e ad
sono tutte le possibili coppie che si può tornare. Non importa quale coppia scegliate, ha un'istanza in cui un singolo altro personaggio è al suo interno, che vieta qualsiasi altra coppia, tranne nel caso di ad
, dove le altre coppie bc
e cb
non sono neppure possibili da sole, e quindi non può essere possibile con ad
.
Questo è il codice golf, quindi vince il codice più breve in byte. L'input proviene da STDIN se possibile per la tua lingua. Se non è possibile, indica il metodo di input nella tua risposta.
abcd
, anche l'outputadbc
sarebbe accettabile, giusto?