刚做完字符串解码,说是和逆波兰表达式求值很像,都是栈操作
逆波兰式也知道,就是后缀表达式,但是要写一下子不一定写得出出来
评论有说这题应属easy,应该是因为把这段儿写出来了吧
int evalRPN(vector<string>& tokens) {
vector<long> nums;
int i = 0;
long num1,num2;
while (i < tokens.size()) {
if (tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")
nums.push_back(stoi(tokens[i]));
else {
num1 = nums.back();
nums.pop_back();
num2 = nums.back();
nums.pop_back();
if (tokens[i] == "+") {
nums.push_back(num1 + num2);
}
else if (tokens[i] == "-") {
// 还有这里的顺序
nums.push_back(num2 - num1);
}
else if (tokens[i] == "*") {
nums.push_back(num1 * num2);
}
else {
// 注意这里的顺序
nums.push_back(num2 / num1);
}
}
i++;
}
return nums.back();
}
注意这里的两个中间值num1和num2用int会越界,改成long
标签:150,tokens,num1,num2,nums,back,力扣,push,求值 From: https://www.cnblogs.com/yaocy/p/16891763.html