leetcode:逆波兰表达式求值


class Solution {
public:int evalRPN(vector<string>& tokens) {stack<int> st;set<string> s={"+","-","*","/"};for(auto& str:tokens){//遍历到操作数则入栈,如果是操作符,则出栈2个操作数进行运算if(s.find(str)!=s.end())//字符{int data2=st.top();//先出栈的是右操作数st.pop();int data1=st.top();//后出栈的是左操作数st.pop();if(str=="+"){int tmp=data1+data2;st.push(tmp);}if(str=="-"){int tmp=data1-data2;st.push(tmp);}if(str=="*"){int tmp=data1*data2;st.push(tmp);}if(str=="/"){int tmp=data1/data2;st.push(tmp);}}else{st.push(std::stoi(str));//将字符类数字转换为整形类数字,比如'10'转换为10}}return st.top();}
};

