LeetCode 150.逆波兰表达式求值
思路🧐:
用栈存储该字符串,如果遇到数字就入栈,遇到符号就将数字出栈计算后再入栈,当整个字符串遍历完后,栈顶值就是该表达式的值。
代码🔎:
class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; for(auto str : tokens) //遍历字符串 { int left = 0; int right = 0; if(str == "+" || str == "-" || str == "*" || str == "/") { right = st.top(); //取右值 st.pop(); left = st.top(); //取左值 st.pop(); switch(str[0]) //str[0]才能取到字符 { case '+': st.push(left + right); break; case '-': st.push(left - right); break; case '*': st.push(left * right); break; case '/': st.push(left / right); break; } } else //数字就转换后存入栈 { st.push(stoi(str)); } } return st.top(); } };