首页 > 解决方案 > Leetcode 上逆波兰符号问题的测试用例的错误答案

问题描述

输入是字符串向量的格式。

这是我得到错误答案的测试用例:

["10","6","9","3","+","-11","*","/","*","17","+","5","+"]

预期的答案是22,但输出是23

结果在我的 IDE 上是一样的。

我遵循的方法是:

  1. 如果字符串是运算符,则从堆栈中弹出最后两个元素并将其结果压入堆栈(我不检查堆栈是否为空,因为他们在问题陈述中提到输入将始终有效)。
  2. 否则将数字压入堆栈。

问题链接:https ://leetcode.com/problems/evaluate-reverse-polish-notation/

代码:

class Solution {
public:
    int evalRPN(vector<string>& A) {
        
    stack<int> s;
    int i = 0;

    while(i<A.size())
    {
        string num = A[i];

        if(num=="+" || num=="-" || num=="*" || num=="/")
        {
            int num2 = s.top();
            s.pop();
            int num1 = s.top();
            s.pop();

            if(num=="+")
            {
                s.push(num1+num2);
            }else if(num=="-")
            {
                s.push(num1-num2);
            }else if(num=="*")
            {
                s.push(num1*num2);
            }else if(num=="/")
            {
                int ans = num1/num2;
                s.push(trunc(ans));
            }
        }else
        { 
            int j = 0;
            int ans = 0;
            string numx = A[i];
            while(j<numx.length())
            {
                ans += (ans * 10)+(numx[j]-48);
                j++;
            }
            s.push(ans);
        }
        i++;    
    }
        
    int ans = s.top();

    return ans;    
    
    }
};

标签: c++stackarithmetic-expressions

解决方案


推荐阅读