思路
建一个栈,遍历算式,遇到数字塞进去,遇到算符,去除栈顶2个元素进行运算;
假设算式是9 3 -,栈里的顺序是9 3,(栈顶在右),用第二读出来的9减去第一个读出来的3;
代码
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
int i, result;
int num1, num2, temp;
for(i = 0; i < tokens.size(); i++)
{
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/")
{
num1 = st.top();
st.pop();
num2 = st.top();
st.pop();
if(tokens[i] == "+")
{
temp = num2 + num1;
}
else if(tokens[i] == "-")
{
temp = num2 - num1;
}
else if(tokens[i] == "*")
{
temp = num2 * num1;
}
else if(tokens[i] == "/")
{
temp = num2 / num1;
}
st.push(temp);
}
else // 是数字
{
st.push(stoi(tokens[i]));
}
}
return st.top();
}
};
注意string转int函数用法:stoi()