首页 > 代码库 > LeetCode OJ - Evaluate Reverse Polish Notation
LeetCode OJ - 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
解题思路:
遇到数字则将其压入栈中,遇到运算符就弹出栈顶的两个元素做相应的运算,然后将运算结果压入栈中。
最后的结果保存在栈顶。
代码:
class Solution { public: int evalRPN(vector<string> &tokens) { stack<int> st; int operand_a = 0, operand_b = 0, tmp; stringstream ss; vector<string>::iterator it; for(it = tokens.begin(); it != tokens.end(); it++){ ss.clear(); if ((*it) == "+" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a + operand_b); } else if ((*it) == "-" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a - operand_b); } else if ((*it) == "*" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a * operand_b); } else if ((*it) == "/" ){ operand_b = st.top(); st.pop(); operand_a = st.top(); st.pop(); st.push(operand_a / operand_b); } else{ ss.str(*it); ss >> tmp; st.push(tmp); } } return st.top(); } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。