逆波兰表达式求值
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 result = st.top(); return result; } };
和昨天的题目思想一样,通过一个循环进行出入栈操作,来实现递归操作表达式的目的。
标签:num1,num2,Day27,long,st,tokens,push,LeetCode,刷题 From: https://www.cnblogs.com/tianmaster/p/16930892.html