leetcode 150. Evaluate Reverse Polish Notation
https://www.cnblogs.com/grandyang/p/4247718.html
逆波兰表达式就是把操作数放前面,把操作符后置的一种写法。用stack解决就好了。
因为tokens里面存的是string,所以判断+、-等符号时,都要是双引号"",不能用平时字符的单引号''。
并且将string转换为int存储的时候,不能使用-'0'的方式,这是字符转换的方式,这个是字符串,所以必须用stoi。
注意在减法、除法时,num1、num2的前后顺序很重要。
class Solution { public: int evalRPN(vector<string>& tokens) { if(tokens.empty()) return 0; stack<int> s; for(int i = 0;i < tokens.size();i++){ if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/") s.push(stoi(tokens[i])); else{ int num1 = s.top(); s.pop(); int num2 = s.top(); s.pop(); int tmp; if(tokens[i] == "+") tmp = num1 + num2; else if(tokens[i] == "-") tmp = num2 - num1; else if(tokens[i] == "*") tmp = num1 * num2; else if(tokens[i] == "/") tmp = num2 / num1; s.push(tmp); } } return s.top(); } };