Evaluate Reverse Polish Notation

来源:互联网 发布:mac app下载 编辑:程序博客网 时间:2024/04/28 09:51

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;}elseq.push(atoi((*iter).c_str()));}int d =q.top();q.pop();return d;    }};

0 0
原创粉丝点击