leetcode Evaluate Reverse Polish Notation

#include <iostream>
#include <cstdlib>
#include < string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
using  namespace std;

int evalRPN(vector< string> &tokens) {
    stack< int> value;
     int i =  0;
     for(i =  0; i < tokens.size(); i++){
         if(tokens[i] ==  " + " || tokens[i] ==  " - " || tokens[i] ==  " * " || tokens[i] ==  " / "){
             string t = tokens[i];
             int a = value.top();
            value.pop();
             int b = value.top();
            value.pop();
             if(t ==  " + "){
                value.push(b + a);
            }
             if(t ==  " - "){
                value.push(b - a);
            }
             if(t ==  " * "){
                value.push(b * a);
            }
             if(t ==  " / "){
                value.push(b / a);
            }
        } else{
            value.push(atoi(tokens[i].c_str()));
        }
    }
     return value.top();
        
}



int main( int argc,  char** argv) {
    vector< string> s;
    s.push_back( " 4 ");
    s.push_back( " 13 ");
    s.push_back( " 5 ");
    s.push_back( " / ");
    s.push_back( " + ");
    cout<<evalRPN(s);
     return  0;
}

你可能感兴趣的:(LeetCode)