题目: 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
class Solution {
public:
bool isNum(string str){
int len = str.size();
int i = 0;
if (str[0] == '-') {
if (len==1) return false;
i++;
}
for (;i < len; i++){
if (str[i]>'9' || str[i]<'0') return false;
}
return true;
}
bool isOperand(string str){
if (str.size()>1 || ( str[0]!='+' && str[0]!='-' && str[0]!='*' && str[0]!='/')) return false;
return true;
}
int evalRPN(vector<string> &tokens) {
stack<int> ctr;
int len = tokens.size();
if (len<1) return 0;
int a, b, res;
for (int i = 0; i < len; i++){
string cur = tokens[i];
if (isNum(cur)) ctr.push(stoi(cur));
else if (isOperand(cur)){
b = ctr.top(); ctr.pop(); a = ctr.top(); ctr.pop();
switch(cur[0]){
case '+': res = a+b; break;
case '-': res = a-b; break;
case '*': res = a*b; break;
case '/': if (b == 0) return 0; res = a/b; break;
}
ctr.push(res);
}
else return 0;
}
if (ctr.size()!=1) return 0;
return ctr.top();
}
};
题目: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”, ""]...