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
Have you been asked this question in an interview?
class Solution { public: bool isoperator(string op) { if(op == "+" || op == "-" || op == "*" || op == "/") return true; else return false; } int compute(int op1, int op2, string op) { if(op == "+"){ return op1+op2; } else if(op == "-"){ return op1-op2; } else if(op == "*"){ return op1*op2; } else return op1/op2; } int evalRPN(vector<string> &tokens) { if(tokens.size() == 1){ return atoi(tokens[0].c_str()); } stack<string> buf; for(int i = 0; i < tokens.size(); i++) { if(isoperator(tokens[i])) { string op1 = buf.top(); int ope1 = atoi(op1.c_str()); buf.pop(); string op2 = buf.top(); int ope2 = atoi(op2.c_str()); buf.pop(); int tmp = compute(ope2,ope1,tokens[i]); if(i == tokens.size()-1) { return tmp; } else { char buffer[64]; //itoa(tmp,buffer,10); sprintf(buffer,"%d",tmp); string res(buffer); buf.push(res); } } else buf.push(tokens[i]); } } };
【LeetCode】Evaluate Reverse Polish Notation,布布扣,bubuko.com
【LeetCode】Evaluate Reverse Polish Notation
原文:http://blog.csdn.net/xiaozhuaixifu/article/details/21319295