问题描述:
逆波兰表达式求值,经典问题。
思路:
遇到数字入栈,遇到符号取栈顶的两个元素出来,再将结果入栈,最后栈里剩下的元素就是结果了。
实现代码:
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(auto &s:tokens){
if(s.length()>1 || isdigit(s[0])) st.push(stoi(s));
else{
int num1=st.top(); st.pop();
int num2=st.top(); st.pop();
if(s[0]=='+') num2+=num1;
if(s[0]=='-') num2-=num1;
if(s[0]=='*') num2*=num1;
if(s[0]=='/') num2/=num1;
st.push(num2);
}
}
return st.top();
}
};