zoukankan      html  css  js  c++  java
  • leetcode

    Evaluate Reverse Polish Notation

     Total Accepted: 24595 Total Submissions: 123794My Submissions

    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
    
    Have you been asked this question in an interview? 

    思路:栈的简单应用

    #include <iostream>
    #include <vector>
    #include <string>
    #include <stack>
    #include <cstdlib>
    
    using namespace std;
    
    
    class Solution {
    public:
        int evalRPN(vector<string> &tokens) {
            stack<int> s;
            string str;
            int a, b;
    
            for (int i = 0; i < tokens.size(); i++) {
                str = tokens[i];
                if (str == "+" || str == "-" || str == "*" || 
                    a = s.top(); s.pop();
                    b = s.top(); s.pop();
                    switch(str[0]) {
                        case '+': s.push(b+a); break;
                        case '-': s.push(b-a); break;
                        case '*': s.push(b*a); break;
                        case '/': s.push(b/a); break;
                        }
                }
                else {
                    s.push(atoi(str.c_str()));
                }
            }
            a = s.top();s.pop();
            return a;
        }
    };
    
    
    int main(int argc, char *argv[]) {
        Solution* solution = new Solution();
        vector<string> tokens;
        tokens.push_back("2");
        tokens.push_back("1");
        tokens.push_back("+");
        tokens.push_back("3");
        tokens.push_back("*");
    
        cout << solution->evalRPN(tokens) << endl;
    
        vector<string> tokens2;
        tokens2.push_back("4");
        tokens2.push_back("13");
        tokens2.push_back("5");
        tokens2.push_back("/");
        tokens2.push_back("+");
        cout << solution->evalRPN(tokens2) << endl;
        return 0;
    }
  • 相关阅读:
    FusionMap 检测融合基因
    嵌合体序列
    seqtk 的安装和使用
    cutadapt 的安装与使用
    C语言简单选择排序
    C语言冒泡排序
    Java实现的各种排序算法(包括冒泡,快排等)
    C++实现顺序计算输入表达式的值
    java多线程有几种实现方法?线程之间如何同步
    java中==与equal()方法的区别
  • 原文地址:https://www.cnblogs.com/zhuangzebo/p/3982737.html
Copyright © 2011-2022 走看看