计算反向波兰表示法中算术表达式的值。这段代码有什么错误,只有一个测试用例给出了错误的答案

Evaluate the value of an arithmetic expression in Reverse Polish Notation. what is the error in this code , only one test case is giving me wrong ans

link 问题: https://www.interviewbit.com/problems/evaluate-expression/

最后一个测试用例 [“500”、“100”、“20”、“+”、“40”、“*”、“+”、“30”、“-”] 给出了错误的输出.虽然在干燥 运行 中它给出了正确的输出

int Solution::evalRPN(vector<string> &a) {
    stack<char> s;
    
    for(int i =0;i<a.size();++i){
        
        if(a[i] == "+" || a[i] == "-" || a[i] == "*" || a[i] == "/"){
           
             int v1 = s.top();
             s.pop();
             int v2 = s.top();
             s.pop();
             if(a[i] == "+") {
                 s.push(v2+v1);
             }
             else if (a[i] == "-") {
                  s.push(v2-v1);
             }
             else if (a[i] == "*") {
                   s.push(v2*v1);
             } 
             else if (a[i] == "/") {
                  s.push(v2/v1);
             }
        }
        else{
            s.push(atoi(a[i].c_str()));
        }
    }
    return s.top();
}

我认为问题在于您在将 integers 推入其中时为 char 声明了堆栈,请尝试更改您的代码以使用

stack<int> s;