LeetCode 150.逆波兰表达式求值
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目解析
首先我们需要知道什么是逆波兰表达式,像我们平常遇到的都是中缀表达式,然而逆波兰确实后缀表达式,因此这个题目隐含的意思就是将一个后缀表达式转换为中缀表达式,并计算它的值。
本题使用栈来进行存储遍历到的数据,当我们遍历到数字的时候将该数字入栈,如果遍历到运算符就出栈两个数进行运算符的操作,然后将结果入栈。最终剩下的栈顶元素就是我们需要的答案。
代码
class Solution
{
public:int evalRPN(vector<string>& tokens) {// stoi// "+" "-" "*" "/"stack<int> st;for(auto str:tokens){if(str=="+"||str=="-"||str=="*"||str=="/"){int right=st.top();st.pop();int left=st.top();st.pop();switch(str[0]){case '+':{int ret=left+right;st.push(ret);break;}case '-':{int ret=left-right;st.push(ret);break;}case '*':{int ret=left*right;st.push(ret);break;}case '/':{int ret=left/right;st.push(ret);}default:{}}}else{int target=stoi(str);st.push(target);}}return st.top();}
};