本文最后更新于626 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
题目链接/文章讲解/视频讲解:https://programmercarl.com/0150.%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.html
1.题目不难,看视频讲解的逆波兰表达式,明白这个二叉树的后序遍历,厘清思路还是很快把代码写出来了,但是没想到用long long但是想到强制类型转换了,虽然没什么用,而且还有一个问题就是在这个题之前我这个双引号" "和单引号' '都是混着用的,现在才明白前者是字符串"hello"后者是'+'这样的效果。
CPP
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long>st;
for(int i = 0;i<tokens.size();i++){
if(tokens[i] == "+" ||tokens[i] == "-" ||tokens[i] == "*"||tokens[i] == "/"){
long long num1 = st.top();
st.pop();
long long num2 = st.top();
st.pop();
if(tokens[i] == "+")st.push(num2 + num1);
if(tokens[i] == "-")st.push(num2 - num1);
if(tokens[i] == "*")st.push(num2 * num1);
if(tokens[i] == "/")st.push(num2 / num1);
}else{
st.push(stoll(tokens[i]));
}
}
int res = st.top();
st.pop();
return res;
}
};