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) !