力扣-150-逆波兰表达式求值

刚做完字符串解码,说是和逆波兰表达式求值很像,都是栈操作

逆波兰式也知道,就是后缀表达式,但是要写一下子不一定写得出出来

评论有说这题应属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

posted @ 2022-11-15 11:11  YaosGHC  阅读(24)  评论(0)    收藏  举报