题目:
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
int num1,num2;
for(int i=0; i<tokens.size(); i++)
{
// 错误1::tokens[i] < "0" 这里全部都要用到 双引号,我第一次自己写,
// 全写成单引号了,string 一定对应双引号嘛!!!!
// 错误2::if(st.size() > 1 && tokens[i] < "0")
// 我的判断语句写错了,因为还有负数嘛!肯定错咯
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
{
num1 = st.top();
st.pop();
num2 = st.top();
// 错误3::这里用完也的 pop,我没写,哼唧唧!!!!
st.pop();
//错误4::第一次自己做竟然,没有判断,自己写成了num1 token[i] num2
// 哈哈哈哈哈 计算机要被我这样的选手气死吧~ 哈哈哈
// 错误5::这里注意是 num1 在前,还是 num2 在前
if(tokens[i]=="+") st.push(num2 + num1);
if(tokens[i]=="-") st.push(num2 - num1);
if(tokens[i]=="*") st.push(num2 * num1);
if(tokens[i]=="/") st.push(num2 / num1);
}
else
{
st.push(stoi(tokens[i]));
}
}
int result = st.top();
st.pop(); // 错误6:这个我本来没想弹出,但是看到carl大神弹了就还是弹吧
return result;
}
};