https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/
思路:stack
int get_int(string s) {
if (s.size() == 1) {
return s[0] - '0';
}
int flag = 1;
int i = 0;
if (s[0] == '-') {
flag = -1;
i += 1;
}
int num = 0;
while (i < s.size()) {
num = num * 10 + (s[i] - '0');
i += 1;
}
return num * flag;
}
int evalRPN(vector<string>& tokens) {
if (tokens.size() <= 0) {
return 0;
}
stack<int> st;
for (int i = 0; i < tokens.size(); i++) {
if (tokens[i] == "+") {
int a = st.top();
st.pop();
int b = st.top();
st.pop();
st.push(a + b);
} else if (tokens[i] == "-") {
int a = st.top();
st.pop();
int b = st.top();
st.pop();
st.push(b - a);
} else if (tokens[i] == "*") {
int a = st.top();
st.pop();
int b = st.top();
st.pop();
st.push(b * a);
} else if (tokens[i] == "/") {
int a = st.top();
st.pop();
int b = st.top();
st.pop();
st.push(int(b / a));
} else {
st.push(get_int(tokens[i]));
}
}
return st.top();
}