Esercizio sulle Stringhe

di il
2 risposte

Esercizio sulle Stringhe

Scrivere una classe con relativo main nel quale data una stringa X composta dai simboli ( ) [ ] { } effettui la validazione corretta dell'uso delle parentesi.
Le regole sono quelle delle espressioni matematiche, ogni parentesi se aperta deve essere sempre chiusa.

Casi di test:

(){[()()(())]}

{[()()(}]}

Volevo capire come risolvere questo esercizio. Se meglio usare un ciclo for con istruzioni if/else o switch/case..
Inoltre le classi Pattern e Matcher possono essere usate o è difficile utilizzare i caratteri (,[,{ con queste classi?

Grazie

2 Risposte

  • Re: Esercizio sulle Stringhe

    Innanzitutto dovrebbe valere pure la regola che più coppie di parentesi non possono "sovrapporsi" (come per i tag XML). Ovvero in ([)] le coppie loro stesse sono ok ma si sovrappongono e quindi non è valido.

    Comunque per la scansione della stringa basta un semplice for ma quello che è importante è la logica di analisi.
    Per fare la cosa in modo pulito e lineare dovresti usare uno "stack" di caratteri. Quando trovi una parentesi di apertura la "spingi" sullo stack. Quando ne trovi una di chiusura, se corrisponde a quella che appare al top dello stack, allora la togli dallo stack. Se alla fine di tutti i caratteri lo stack è vuoto, allora le parentesi sono bilanciate.


    P.S. si può fare anche con un approccio "ricorsivo". Devi valutare tu in base a cosa ti è stato eventualmente imposto o suggerito.
  • Re: Esercizio sulle Stringhe

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte