思路:逆波兰表达式相当于后缀表达式,遵循二叉树里的左右中顺序。用一个栈来辅助表达,就是遇到数字就把数字弹入栈,这里要注意弹入栈中的元素要把string类型改成int类型,这里要用到stoi()函数,是c++中将string转换成int类型所用到的函数;如果遇到操作符,就弹出两个数字进行操作符运算。最后用result来保存栈中的最后一个元素,也就是结果,然后返回。
题解c++:
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(int i=0;i<tokens.size();i++)
{
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
{
int num1=st.top();
st.pop();
int num2=st.top();
st.pop();
if(tokens[i]=="+") st.push(num2+num1);
else if(tokens[i]=="-") st.push(num2-num1);
else if(tokens[i]=="*") st.push(num2*num1);
else if(tokens[i]=="/") st.push(num2/num1);
}
else {
st.push(stoi(tokens[i]));
}
}
int result=st.top();
return result;
}
};