Maison  >  Article  >  interface Web  >  Question amusante JavaScript : parenthèses appariées

Question amusante JavaScript : parenthèses appariées

黄舟
黄舟original
2017-02-15 14:14:351466parcourir

Jetons d’abord un coup d’œil à quelques exemples, afin de comprendre rapidement ce que signifie « par paires ».


validParentheses( "()" ) // => returns true

Une parenthèse gauche et une parenthèse droite, tout comme une paire.

La suivante forme deux paires :


validParentheses( "(())" ) // => returns true

Prenons-en une plus compliquée, qui s'appelle N paire :


validParentheses( "(())((()())())" ) // => returns true

Les parenthèses suivantes ne peuvent pas être appelées "par paires", elles ne peuvent être appelées que "sous forme unique" :


validParentheses( "(" ) // => returns false

Ceci Par exemple, il y a deux paires, mais il y a deux parenthèses droites seules : ​​


validParentheses( ")(()))" ) // => returns false

D'accord, après avoir écouté mon introduction, prenons un regardez la tâche :

Écrivez une fonction validParentheses qui accepte une chaîne composée de parenthèses. Si les parenthèses sont "par paires", elle renvoie vrai, sinon elle renvoie faux.
Toutes les chaînes d'entrée ne sont pas vides et n'ont que des crochets gauche et droit.

Idée :

Puisque c'est "par paires", faisons une approche "offset un par un".

Préparez d'abord une pile vide, poussez-la dans la pile lorsqu'elle rencontre un support gauche, crachez un "support gauche" lorsqu'elle rencontre un support droit, et les deux se compensent.

Attendez que tous les caractères aient été traités et déterminez l'état de la pile. Si la pile est vide, cela signifie que toutes les parenthèses sont décalées, c'est-à-dire "par paires".

Le code est le suivant :


function validParentheses(parens){
    var stack = [];
    for(var i=0;i<parens.length;i++){
        var current = parens.charAt(i);
        switch(current){
            case "(":
                stack.push(current);
                break;
            case ")":
                var ele = stack.pop();
                if(ele === void 0){
                    return false;
                }
                break;
        }
    }
    return stack.length == 0;
}




Ce qui précède est la question JavaScript intéressante : le contenu de paires de parenthèses , pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn