用逆波兰表示法计算算术表达式的值。这段代码有啥错误,只有一个测试用例给了我错误的答案
Posted
技术标签:
【中文标题】用逆波兰表示法计算算术表达式的值。这段代码有啥错误,只有一个测试用例给了我错误的答案【英文标题】: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用逆波兰表示法计算算术表达式的值。这段代码有什么错误,只有一个测试用例给了我错误的答案 【发布时间】:2022-01-14 23:30:27 【问题描述】:问题链接: 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();
【问题讨论】:
注意,表达式中最后一个+
是酉运算符。
What is a debugger?
【参考方案1】:
我认为问题在于您在将integers
推入其中时已为char
声明堆栈,请尝试更改您的代码以使用
stack<int> s;
【讨论】:
以上是关于用逆波兰表示法计算算术表达式的值。这段代码有啥错误,只有一个测试用例给了我错误的答案的主要内容,如果未能解决你的问题,请参考以下文章