首页 > 代码库 > leetcode 150. Evaluate Reverse Polish Notation
leetcode 150. Evaluate Reverse Polish Notation
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
主要是栈的应用:
tockens[i]如果是操作数,直接压栈。如果是运算符,则两次pop的结果运算后压栈。
最后栈中的元素即为结果。
1 int evalRPN(vector<string> &tokens) 2 { 3 int op_a, op_b; 4 stack<int> sk; 5 for (int i = 0; i < tokens.size(); i++) 6 { 7 string str = tokens[i]; 8 if ((str[0] == ‘+‘) || (str[0] == ‘-‘ && str.size() == 1) || (str[0] == ‘*‘) || (str[0] == ‘/‘)) 9 {10 op_a = sk.top();11 sk.pop();12 op_b = sk.top();13 sk.pop();14 switch(str[0])15 {16 case ‘+‘:17 sk.push(op_b + op_a);18 break;19 case ‘-‘:20 sk.push(op_b - op_a);21 break;22 case ‘*‘:23 sk.push(op_b * op_a);24 break;25 default:26 sk.push(op_b / op_a);27 }28 }29 else 30 {31 sk.push(atoi(str.c_str()));32 }33 }34 return sk.top();35 }
leetcode 150. Evaluate Reverse Polish Notation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。