今天,下午有一个面试,二面的时候有道算法题,我对算法一窍不通,求大神解惑
题目是 实现计算加减乘除括号运算的函数 输入字符串 类似 (1+2)/4+5+(3+5)*3 类似的合法运算
能不能稍微讲解下大体思路是什么?面试大哥当时语重心长的说了声这是算法题,我想不应该是eval()这种实现吧?
今天,下午有一个面试,二面的时候有道算法题,我对算法一窍不通,求大神解惑
题目是 实现计算加减乘除括号运算的函数 输入字符串 类似 (1+2)/4+5+(3+5)*3 类似的合法运算
能不能稍微讲解下大体思路是什么?面试大哥当时语重心长的说了声这是算法题,我想不应该是eval()这种实现吧?
最通用的方法是语法分析,构建表达式树,然后求解。
你可以自己写,也可以用一个很专业很通用的库叫Antlr。
当然面试的时候应该是让你自己分析语法构建语法树了,真正做的时候还是Antlr更好一些。
我不推荐采用eval这个被抛弃的方法。一.推荐使用正则表达式 二.使用数据结构中的栈的方法
推荐一本书:学习JavaScript数据结构与算法
最近刚好在研究栈,队列,二叉树这些东西
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答836 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
用调度场算法把中缀表达式改后缀表达式(逆波兰表达式)