上周面试一个候选人,问了一个数据结构与算法的问题,表达式求值。
题目大概是这样的:
输入长度为n的字符串,例如:1+2+3*4*5
输出表达式的值,即:63
我暗示的问:应该用什么数据结构?
候选人回答:栈。
画外音:算是答对。
问:时间复杂度呢?
回答:O(n^2)
画外音:额,应该不需要两个for循环吧。
我接着提示:应该先计算哪一步?
候选人回答:先计算3*4。
画外音:额,难道是乘除大于加减?
实际应该先计算1+2,说明候选人对“表达式求值”并没有搞透。
怎么用栈来实现呢?