leetCode:Evaluate Reverse Polish Notation

来源:互联网 发布:诺基亚5250软件下载 编辑:程序博客网 时间:2024/06/16 11:03

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +, -, *, /. Each operand may be an integer or another expression.

Some examples:

  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

#include<iostream>#include<vector>#include<string>#include<stdlib.h>using namespace std;class Solution{public:    int eval_expression(vector<string> & tokens, int & pt);    int evalRPN(vector<string> &tokens);   };int Solution::eval_expression(vector<string> &tokens,int &pt){    string s=tokens[pt];    if(s=="+"||s=="-"||s=="*"||s=="/"){        pt--;        int v2=eval_expression(tokens,pt);        pt--;        int v1=eval_expression(tokens,pt);        if(s=="+")            return v1+v2;        else if(s=="-")            return v1-v2;        else if(s=="*")            return v1*v2;        else            return v1/v2;    }else{        return atoi(s.c_str());    }}int Solution::evalRPN(vector<string> &tokens){    int pt=tokens.size()-1;    return eval_expression(tokens,pt);}int main(){    string array[5]={"2","1","+","3","*"};    vector<string> vs(array,array+5);//    vector<string>::iterator it;//    for(it=vs.begin();it!=vs.end();it++)//        cout<< *it << " ";//    cout<<endl;    Solution s;    int length=4;    int sum=s.eval_expression(vs,length);    cout<<sum<<endl;    return 0;}











0 0
原创粉丝点击