-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBasic Calculator II.cpp
32 lines (28 loc) · 994 Bytes
/
Basic Calculator II.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public:
int calculate(string s) {
char op = '+';
int curr = 0;
vector<int> stk;
for (int i = 0; i < s.size(); ++i) {
if(isdigit(s[i])) curr = curr*10 + (s[i] - '0');
if(i==s.size()-1 || s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/'){
if (op == '+') stk.push_back(curr);
else if (op == '-') stk.push_back(curr*(-1));
else if (op == '*'){
int num = stk.back();
stk.pop_back();
stk.push_back(num * curr);
}
else if (op == '/'){
int num = stk.back();
stk.pop_back();
stk.push_back(num / curr);
}
curr = 0;
op = s[i];
}
}
return accumulate(stk.begin(), stk.end(), 0);
}
};