力扣https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/代码整体思路:题目给出的是一个后缀表达式
首先依次读取容器中每一个string,如果是操作数直接入栈,
如果为操作符则从栈中读取两个操作数分别为右操作数和左操作数,然后进行相应的运算,结果再压入栈中。
直到遍历完整个后缀表达式,输出栈顶元素。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(auto& str : tokens)
{
if(str == "+" ||str == "-" || str == "*" || str == "/")
{
int right = st.top();
st.pop();
int left = st.top();
st.pop();
switch(str[0]) //str[0]换成str会编译不通过,switch要求类型是整型,而str[0]字符同属于整型
{
case '+':
st.push(left + right);
break;
case '-':
st.push(left - right);
break;
case '*':
st.push(left * right);
break;
case '/':
st.push(left / right);
break;
}
}
else
{
st.push(stoi(str));
}
}
return st.top();
}
};