Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6这道题我只是简单的进行了计算。没有考虑题目中可能出现的问题,也就是一些非法输入导致的bug。
class Solution {
public:
//bool VALID = true;
int evalRPN(vector<string> &tokens) {
stack<int> s;
if(tokens.size()==0) return 0;
//int ans = 0;
for(int i = 0;i<tokens.size();i++)
{
if(tokens[i] == "+"||tokens[i] == "-"||tokens[i] == "*"||tokens[i] == "/")
{
int tmp2 = s.top();
s.pop();
int tmp1 = s.top();
s.pop();
if(tokens[i] == "+")
s.push(tmp1+tmp2);
else if(tokens[i] == "-")
s.push(tmp1-tmp2);
else if(tokens[i] == "*")
s.push(tmp1*tmp2);
else
s.push(tmp1/tmp2);
}
else
s.push(atoi(tokens[i].c_str()));
}
return s.top();
}
};
可以看到上面我用了atoi,而这个函数是将字符串转换为整数的,因此要将string类型转换为字符串
char *p = string.c_str();