zoukankan      html  css  js  c++  java
  • LeetCode 150. Evaluate Reverse Polish Notation

    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

    题目要求实现一种“逆波兰表达式”,该表达式没有括号表示优先级,优先级完全体现在顺序中,从前到后扫描遇见符号就将符号前的两个数进行对应运算,然后将此数入栈,依次进行,遍历整个string向量。该题目为栈的典型应用

    注意:1、尽量不要用switch语句,因为该语句支持吃 int 或者 char类型,使用if语句更好一些;2一定别忘处理只有vector中只有一个数字没有运算符的情况

    代码如下:

     1 class Solution {
     2 public:
     3     int evalRPN(vector<string>& tokens) {
     4         int len = tokens.size();
     5         if (len == 1)
     6             return stoi(tokens[0].c_str());
     7         stack<int> s;
     8         for (int i = 0; i < len; i++)
     9         {
    10             if (tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")
    11                 s.push(atoi(tokens[i].c_str()));
    12             else
    13             {
    14                 int m = s.top();
    15                 s.pop();
    16                 int n = s.top();
    17                 s.pop();
    18                 if (tokens[i] == "+")
    19                    s.push(n + m);
    20                 else if (tokens[i] == "-")
    21                    s.push(n - m);
    22                 else if (tokens[i] == "*")
    23                    s.push(n * m);
    24                 else
    25                    s.push(n / m);
    26             }
    27                 
    28         }
    29         return s.top();
    30     }
    31 };

     补充:c++11支持stoi函数,能直接将string转化为int

  • 相关阅读:
    MySQL-基础知识整理
    设计模式-适配器模式
    MySQL
    MySQL-5.7 填坑
    MySQL
    Oracle
    SQL 注入
    Apache JMeter
    AppScan
    DNS 搜索
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/8708855.html
Copyright © 2011-2022 走看看