PHP: validare il bilanciamento delle parentesi

PHP: validare il bilanciamento delle parentesi

In PHP possiamo validare il bilanciamento delle parentesi.

Una coppia di parentesi รจ bilanciata se alla parentesi di apertura segue la corrispondente parentesi di chiusura. Possiamo implementare la seguente soluzione.


function is_valid($s = '') {
    if(empty($s)) {
        return false;
    }
    $allowed_chars = ['(', ')', '{', '}', '[', ']'];
    $valid = true;
    $len = strlen($s);

    for($i = 0; $i < $len; $i++) {
        if(!in_array($s[$i], $allowed_chars)) {
            $valid = false;
        }
    }

    $j = 0;

    while($j < $len) {
        
        $ch = $s[$j];
        $next_i = $j + 1;
        $next = $next_i < $len ? $s[$next_i] : null;
        if(is_null($next)) {
            break;
        }
        switch($ch) {
            case '(':
                if($next !== ')') {
                    $valid = false;
                }
                break;
            case '{':
                if($next !== '}') {
                    $valid = false;
                } 
                break;
            case '[':
                if($next !== ']') {
                    $valid = false;
                }       
                break;
            default:
                break;    
        }

        $j++;
    }

    return $valid;
}
    

Esempio d'uso:


 $examples = ['()', '()[]{}', '(]'];
foreach($examples as $e) {
   var_dump(is_valid($e));
}   
    
Torna su