Valid Parentheses
Una stringa di parentesi è bilanciata quando ogni parentesi aperta viene chiusa da una parentesi dello stesso tipo e le coppie sono annidate, invece di sovrapporsi. Esistono tre tipi: tonde (), quadre [] e graffe {}.
Per esempio, {[()()]} è bilanciata: ogni coppia si chiude all'interno della coppia che la racchiude. Invece {(}) non è bilanciata: la parentesi graffa si chiude mentre la parentesi tonda aperta dopo di essa è ancora in attesa. Anche una stringa come (( non è bilanciata, perché nulla chiude le due parentesi aperte.
Scrivi una funzione chiamata isValid che riceve una stringa s composta solo dai caratteri (, ), [, ], { e }, e restituisce true quando le parentesi sono bilanciate e false altrimenti.
Bilanciate significa che ogni parentesi chiusa corrisponde alla parentesi aperta più recente ancora aperta, che le due sono dello stesso tipo e che nessuna parentesi aperta rimane aperta alla fine.
Vincoli: 1 ≤ s.length ≤ 10^4.
Funzione
- arg1string
- Restituisceboolean
Esempi
- Input
- arg1 = "[]{}()"
- Output
- true
- Input
- arg1 = "{[()()]}"
- Output
- true
- Input
- arg1 = "{(})"
- Output
- false
+13 test nascosti all’invio
Suggerimenti
Aprili uno alla volta. Ognuno rivela un po’ di più.
Leggi la stringa da sinistra a destra. Quando arriva una parentesi di chiusura, quale parentesi di apertura può chiudere?
Può chiudere solo la parentesi aperta più di recente e ancora aperta. L'ultima aperta è la prima a essere chiusa: è esattamente l'ordine che mantiene uno stack.
Inserisci ogni parentesi aperta in uno stack. Quando incontri una parentesi chiusa, lo stack non deve essere vuoto e il suo elemento in cima deve essere dello stesso tipo; rimuovilo e continua. Quando la stringa termina, è bilanciata solo se lo stack è vuoto.
Presto una spiegazione completa di questo problema.
Problemi simili
Problemi che usano le stesse idee. Risolverne due o tre è ciò che fissa uno schema.
Python
def isValid(s):
# Scrivi il codice quiCaso 1
Caso 2
Caso 3
Input
arg1 = "[]{}()"Atteso
true