遇到数字进栈,遇到算式符就取出顶栈两个数字进行计算然后将结果入栈
循环字符串数组,将数字入栈,遇到算式符时分别取出栈顶两个数字,
由于栈是先进后出
所以取出来第一个数字为nums1,删除栈顶第一个数,去除第二个数nums2,删除这栈顶第二个数
然后判断算式符是什么,nums2(算式符)nunm1
将结果入栈,继续循环直到结束
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long> st;
for(int i=0;i<tokens.size();i++)
{
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
{
long long nums1=st.top();
st.pop();
long long nums2=st.top();
st.pop();
if(tokens[i]=="+")st.push(nums2 + nums1);
if(tokens[i]=="-")st.push(nums2 - nums1);
if(tokens[i]=="*")st.push(nums2 * nums1);
if(tokens[i]=="/")st.push(nums2 / nums1);
}
else
{
st.push(stoll(tokens[i]));
}
}
int result=st.top();
st.pop();
return result;
}
};