·解题思路·
利用栈,如果是数字就压入栈,字符串到数字转换用stoi,如果是符号就把栈头两个数字出栈,然后进行运算后再入栈,直到栈里只剩下一个数字。改了几遍,没有改进,放弃了。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
int n1,n2;
for (string s : tokens) {
if (s == ("+")) {
n1 = st.top(); st.pop();
n2 = st.top(); st.pop();
st.push(n2+n1);
}
else if (s == ("-")) {
n1 = st.top(); st.pop();
n2 = st.top(); st.pop();
st.push(n2-n1);
}
else if (s == ("*")) {
n1 = st.top(); st.pop();
n2 = st.top(); st.pop();
st.push(n2*n1);
}
else if (s == ("/")) {
n1 = st.top(); st.pop();
n2 = st.top(); st.pop();
st.push(n2/n1);
}
else {
st.push(stoi(s));
}
}
return st.top();
}
};