Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9
[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
class Solution {
public:
int evalRPN(vector<string>& tokens) {
if(tokens.empty()) return 0;
stack<int> st;
for(string s:tokens){
if(s=="+"){
int first=st.top();
st.pop();
int second=st.top();
st.pop();
st.push(second+first);
}
else if(s=="-"){
int first=st.top();
st.pop();
int second=st.top();
st.pop();
st.push(second-first);
}
else if(s=="*"){
int first=st.top();
st.pop();
int second=st.top();
st.pop();
st.push(second*first);
}
else if(s=="/"){
int first=st.top();
st.pop();
int second=st.top();
st.pop();
st.push(second/first);
}
else{
int num=stoi(s);
st.push(num);
}
}
return st.top();
}
};
二刷时自己做出来的,应该注意
stoi() string to int 就不需要像atoi那样 还需要s.c_str()
stol()是转成long型的。
比较方便
还有对称的to_string();