您的位置:首页 > 编程语言 > Lua

Evaluate Reverse Polish Notation

2014-03-19 11:44 204 查看
some example:



其实就是一个后序遍历求值的问题,利用栈的后进先出的思想,每次遇到一个运算符,进行两次出栈操作,找出对应的两个数字并计算值,然后重新入栈。以前一直以为只要判断字符<'0'或者>'9'就能判断是否是运算符,但是提交失败,原来会存在负数的情况,这点以前没有注意到,还好这里面只有4个运算符.class Solution {
public:
int evalRPN(vector<string> &tokens) {
stack<int> q;
string str1[4]={"*","-","+","/"};
int flag = 0;
for(vector<string>::const_iterator iter = tokens.begin();iter!=tokens.end();iter++){
for(int i=0;i<(sizeof(str1)/sizeof(str1[1]));i++){
if(str1[i]==*iter)
{ flag=1;
break;
}
}
if(flag){
int a=q.top();
q.pop();
int b=q.top();
q.pop();
int c;
if((*iter)=="+"){
c = a+b;
}
else if((*iter)=="-"){
c =b-a;
}
else if((*iter)=="*"){
c=a*b;
}
else if((*iter)=="/"){
c = b/a;
}
q.push(c);
flag =0;
}
else
q.push(atoi((*iter).c_str()));

}
int d =q.top();
q.pop();
return d;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 数据结构