leetcode——第150题——求逆波兰表达式

题目:
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 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;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值