D*********G 发帖数: 193 | 1 前一阵面试,被问到Evaluate Reverse Polish Notation.
做完之后,要求设计一个object来完成不同的符号运算,条件是避免if 或者 switch
去check符号,从而提高速度。
当时觉得肯定是要hmap加函数指针。面试官不是很满意,要求设计一个类实现。
不会,主要问题是hmap里面只能放 父函数,调用的时候都是父函数的function。
我的函数指针的方法如下,请大家指点一下如何能用类实现啊
typedef int(*pf)(int, int);
int my_add(int a, int b){ return a + b; }
int my_sub(int a, int b){ return a - b; }
int my_mul(int a, int b){ return a*b; }
int my_div(int a, int b){ return a / b; }
class Solution {
public:
Solution(){
hmap["+"] = my_add, hmap["-"] = my_sub, hmap["*"] = my_mul, hmap["/"
] = my_div;
}
int evalRPN(vector &tokens) {
if (!tokens.size()) return 0;
stack intergers;
int a = 0, b = 0;
for (int i = 0; i
if (hmap.count(tokens[i])){
a = intergers.top(); intergers.pop();
b = hmap[tokens[i]](a,b);
}
else{
intergers.push(b);
b = atoi(tokens[i].c_str());
}
}
return b;
}
private:
map hmap;
}; | t******5 发帖数: 49 | |
|