Aujourd'hui, j'ai un entretien dans l'après-midi. Lors du deuxième entretien, il y a eu une question sur les algorithmes. Je ne connais rien aux algorithmes. Veuillez demander à quelqu'un de m'aider.
Le sujet est d'implémenter une fonction qui calcule l'addition, la soustraction, la multiplication et la division des parenthèses. La chaîne d'entrée est similaire à (1+2)/4+5+(3+5)*3. expliquer un peu l'idée générale ? L'intervieweur a dit sincèrement qu'il s'agissait d'une question d'algorithme. Je ne pense pas que cela devrait être une implémentation de eval(), n'est-ce pas ?
Utilisez l'algorithme du dispatching pour changer l'expression infixe en expression suffixe (expression polonaise inversée)
eval est une méthode, mais elle est relativement non standardisée et ne doit pas être utilisée dans la plupart des cas.
Les quatre expressions régulières de l'opération d'arbre binaire pour l'addition régulière
Utilisez la pile pour implémenter l'évaluation d'expression. Sur Baidu, il y en a
.Vous pouvez utiliser le style polonais inversé de la structure des données
La méthode la plus courante est l'analyse syntaxique, la construction d'un arbre d'expression, puis sa résolution.
Vous pouvez l'écrire vous-même ou utiliser une bibliothèque très professionnelle et polyvalente appelée Antlr.
Bien sûr, lors de l'entretien, il devrait vous être demandé d'analyser la grammaire et de construire vous-même l'arbre grammatical. Quand il s'agit de le faire, Antlr est meilleur.
Algorithmes et exemples d'analyse de quatre expressions arithmétiques en javascript,
L'affiche originale a un bon look
Algorithmes et exemples d'analyse de quatre expressions arithmétiques en javascript
Je ne recommande pas d'utiliser la méthode d'évaluation abandonnée. 1. Il est recommandé d'utiliser des expressions régulières 2. Comment utiliser les piles dans les structures de données
Recommander un livre : Apprendre les structures de données et les algorithmes JavaScript
J'ai récemment étudié des choses comme les piles, les files d'attente et les arbres binaires
Ceci... si vous saisissez une chaîne.
Vous pouvez utiliser eval() directement
var a = '(1+2)/4+5+(3+5)*3';
eval(a);
La méthode couramment utilisée pour analyser les quatre opérations arithmétiques des chaînes est la méthode polonaise inverse
Utilisez une pile pour l'implémenter. Il y a deux ans, lorsque je faisais des expériences sur la structure des données, j'en avais une qui vérifiait également la légalité de la formule.
.D'accord, je peux. Je ne le trouve pas. Mon impression générale est que je veux en créer un. Utilisez un tableau bidimensionnel pour déterminer la priorité de l'opérateur, puis utilisez la pile pour la calculer