Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 227. Basic Calculator II
題目:

方法:
stack統一做加總的動作,所有"+、-、*、/"都預先處理
解答:
class Solution {
public:
int calculate(string s) {
int num = 0;
char op = '+';
stack<int> st;
for (int i = 0; i < s.size(); ++i) {
char ch = s[i];
if (isdigit(ch)) {
num = num * 10 + (ch - '0');
}
if ((!isdigit(ch) && ch != ' ') || (i == s.size() - 1)) {
if (op == '+') {
st.push(num);
}
else if (op == '-') {
st.push(-num);
}
else if (op == '*') {
int v = st.top(); st.pop();
st.push(v * num);
}
else if (op == '/') {
int v = st.top(); st.pop();
st.push(v / num);
}
op = ch;
num = 0;
}
}
int ans = 0;
while (!st.empty()) {
ans += st.top();
st.pop();
}
return ans;
}
};