Heute habe ich ein Vorstellungsgespräch. Ich habe keine Ahnung von Algorithmen.
Das Thema besteht darin, eine Funktion zu implementieren, die Addition, Subtraktion, Multiplikation und Division von Klammern berechnet. Die Eingabezeichenfolge ähnelt (1+2)/4+5+(3+5)*3. Können Sie das? Erklären Sie bitte ein wenig die Grundidee. Der Interviewer sagte ernst, dass dies eine Algorithmusfrage sei. Ich glaube nicht, dass es eine Implementierung von eval() sein sollte, oder?
用调度场算法把中缀表达式改后缀表达式(逆波兰表达式)
eval是个办法,但比较不规范,大多数情况下不要用。
这题的正规加法二叉树运算四则表达式
用栈来实现表达式求值,百度下,有的
可以用数据结构上的逆波兰式
最通用的方法是语法分析,构建表达式树,然后求解。
你可以自己写,也可以用一个很专业很通用的库叫Antlr。
当然面试的时候应该是让你自己分析语法构建语法树了,真正做的时候还是Antlr更好一些。
javascript中解析四则运算表达式的算法和示例,
楼主阔以看一哈
javascript中解析四则运算表达式的算法和示例
我不推荐采用eval这个被抛弃的方法。一.推荐使用正则表达式 二.使用数据结构中的栈的方法
推荐一本书:学习JavaScript数据结构与算法
最近刚好在研究栈,队列,二叉树这些东西
这...输入字符串的话.
你直接用eval()咯
var a = '(1+2)/4+5+(3+5)*3';
eval(a);
解析字符串四则运算常用的是逆波兰法
用栈来实现,两年前我做数据结构实验的时候歇过一个,还带公式合法性检测呢,等我找找放哪了
好吧,找不到了,大致印象就是要做一个二维数组来判断运算符优先级,然后计算用栈来实现