zoukankan      html  css  js  c++  java
  • LeetCode OJ--Evaluate Reverse Polish Notation

    http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

    栈使用

    #include <iostream>
    #include <string>
    #include <vector>
    #include<stack>
    using namespace std;
    
    class Solution {
    public:
        int toNum(string str)
        {
            int sum = 0;
            int i = 0;
            int flagPositiveOrNegative = 1;;
            if(str[0] == '-')
            {
                flagPositiveOrNegative = -1;
                i = 1;
            }
            for( i;i<str.size();i++)
            {
                sum *= 10;
                sum += str[i] - '0';    
            }
            return sum * flagPositiveOrNegative;
        }
        int evalRPN(vector<string> &tokens) {
            if(tokens.size()==0)
                return 0;
            int i = 0;
            stack<int> myStack;
            while(i<tokens.size())
            {
                if(tokens[i] == "+" || tokens[i] == "-" || tokens[i]=="*" ||tokens[i] == "/" )
                {
                    int num1 = myStack.top();
                    myStack.pop();
                    int num2 = myStack.top();
                    myStack.pop();
                    if(tokens[i] == "+")
                        myStack.push(num1+num2);
                    if(tokens[i] == "-")
                        myStack.push(num2-num1);
                    if(tokens[i] == "*")
                        myStack.push(num1*num2);
                    if(tokens[i] == "/")
                        myStack.push(num2/num1);
                }
                else
                {
                    myStack.push(toNum(tokens[i]));
                }
                i++;
            }
            return myStack.top();
        }
    };
    
    int main()
    { 
        Solution myS;
        vector<string> input;
        input.push_back("3");
        input.push_back("-4");
        input.push_back("+");
        cout<<myS.evalRPN(input);
        return 0;
    }
  • 相关阅读:
    JFreeChart API 说明(转)
    杭电1064
    杭电2734
    杭电1170
    杭电1197
    杭电2629
    杭电1062
    杭电2088
    杭电1205
    杭电1004
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3550032.html
Copyright © 2011-2022 走看看