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();} };