[LeetCode 第4题] -- Evaluate Reverse Polish Notation

简介: 题目链接: Evaluate Reverse Polish Notation题目意思: 给的一个表达式,求值代码:class Solution {public: bool IsOperator(const string &s...


题目链接: Evaluate Reverse Polish Notation

题目意思: 给的一个表达式,求值


代码:

class Solution {
public:
     bool IsOperator(const string &str);
     int GetStackTop(stack<int> &stack);
     int evalRPN(vector<string> &tokens);
};

bool Solution::IsOperator(const string &str) {
     if (str == "+" || str == "-" ||
         str == "*" || str == "/") {
         return true;
     }
     return false;
}

int Solution::GetStackTop(stack<int> &stack) {
     if (stack.empty()) {
         throw "stack is empty";
         return -1;
     }
     int topValue = stack.top();
     stack.pop();
     return topValue;
}

int Solution::evalRPN(vector<string> &tokens) {
     stack <int> number;
     int tokensSize = tokens.size();
     for (int i = 0; i < tokensSize; ++i) {
         if (IsOperator(tokens[i])) {
             int rightNumber = GetStackTop(number);
             int leftNumber = GetStackTop(number);
             int result = 0;
             if (tokens[i] == "+") {
                result = leftNumber + rightNumber;
             }
             else if (tokens[i] == "-") {
                result = leftNumber - rightNumber;
             }
             else if (tokens[i] == "*") {
                result = leftNumber * rightNumber;
             }
             else {
                result = leftNumber / rightNumber;
             }
             number.push(result);
         }
         else {
             number.push(atoi(tokens[i].c_str()));
         }
      }
      return GetStackTop(number);
}

目录
相关文章
|
机器学习/深度学习 NoSQL 算法
LeetCode 344. 反转字符串 Reverse String
LeetCode 344. 反转字符串 Reverse String
LeetCode 206. 反转链表 Reverse Linked List
LeetCode 206. 反转链表 Reverse Linked List
|
索引
LeetCode 345. Reverse Vowels of a String
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
54 0
LeetCode 345. Reverse Vowels of a String
|
机器学习/深度学习 NoSQL
LeetCode 344. Reverse String
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
72 0
LeetCode 344. Reverse String
LeetCode 190. Reverse Bits
颠倒给定的 32 位无符号整数的二进制位。
66 0
LeetCode 190. Reverse Bits
LeetCode 150. Evaluate Reverse Polish Notation
根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
29 0
LeetCode 150. Evaluate Reverse Polish Notation
LeetCode 92. Reverse Linked List II
给定一个链表,反转指定的子序列.
60 0
LeetCode 92. Reverse Linked List II
LeetCode之Reverse String II
LeetCode之Reverse String II
86 0
LeetCode之Reverse String
LeetCode之Reverse String
71 0
LeetCode之Reverse Integer
LeetCode之Reverse Integer
80 0