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