刚开始判断条件没弄明白,绕了一圈,呜呜
//
// Created by jt on 2020/8/7.
//
#include <vector>
#include <stack>
using namespace std;
class Solution {
public:
/**
*
* @param tokens string字符串vector
* @return int整型
*/
int evalRPN(vector <string> &tokens) {
// write code here
// 什么是逆波兰式——数字和运算符组成的二叉树的后序遍历,叶节点为数字,非叶节点为运算符
stack<int> op;
for (int i = 0; i < tokens.size(); ++i) {
string current = tokens[i];
// 注意,这里的条件不能判断数字,因为数字可能含有正负号
if (current == "+" || current == "-" || current == "*" || current == "/") {
if (op.size() < 2){ // 如果栈里面没有两个数了,返回0
return 0;
}
int b = op.top();
op.pop();
int a = op.top();
op.pop();
if (tokens[i] == "+") {
op.push(a + b);
} else if (tokens[i] == "-") {
op.push(a - b);
} else if (tokens[i] == "*") {
op.push(a * b);
} else {
op.push(a / b);
}
} else {
op.push(stoi(current));
}
}
return op.top();
}
};
京公网安备 11010502036488号