ho bisogno di estrarre stringhe da parentesi annidate in questo modo:stringa estratto tra parentesi nidificate
[ this is [ hello [ who ] [what ] from the other side ] slim shady ]
Risultato (Ordine non importa):
This is slim shady
Hello from the other side
Who
What
nota, la stringa potrebbe avere N parentesi, e saranno sempre valide, ma potrebbero essere o non essere annidate. Inoltre, la stringa non deve iniziare con una parentesi.
Le soluzioni che ho trovato in linea per un problema simile suggeriscono un'espressione regolare, ma non sono sicuro che funzionerà in questo caso.
Stavo pensando di attuare questo simile a come abbiamo controllare se una stringa ha tutte le parentesi validi:
Passeggiata attraverso la stringa. Se vediamo un [spingiamo il suo indice in pila, se vediamo un], abbiamo sottostringa da lì al punto corrente.
Tuttavia, dovremmo cancellare quella sottostringa dalla stringa originale in modo da non ottenerla come parte di una delle uscite. Quindi, invece di spingere solo spingendo l'indice nello stack, stavo pensando di creare una LinkedList mentre procediamo, e quando troviamo un [inseriamo quel Nodo nella LinkedList. Questo ci permetterà di eliminare facilmente la sottostringa dalla LinkedList.
Questo sarebbe un buon approccio o c'è una soluzione più pulita e conosciuta?
EDIT:
'[ this is [ hello [ who ] [what ] from the other [side] ] slim shady ][oh my [g[a[w[d]]]]]'
Dovrebbe restituire (Ordine non importa):
this is slim shady
hello from the other
who
what
side
oh my
g
a
w
d
spazi bianchi non importa, questo è banale per rimuovere in seguito. Ciò che conta è essere in grado di distinguere i diversi contenuti all'interno delle parentesi. Separandoli in nuove righe o con un elenco di stringhe.
Questa è una bella domanda difficile, voglio risolverlo utilizzando la ricorsione, ma che potrebbe essere un po 'difficile :) –
andare avanti e provare them'all .. – Sundeep
qual è il costrutto iniziale con le staffe? Solo una stringa come "astring =" [questo è [ciao [chi] [cosa] dall'altra parte] slim shady] "'? Se sì, perché non semplicemente astring.replace (']', '') ',' astring.replace ('[', '') 'e quindi' astring.split() '? –