Expression evaluation Basic Calculator
int calculate(string s) {
int total = 0;
vector<int> signs(2, 1);
for (int i=0; i<s.size(); i++) {
char c = s[i];
if (c >= '0') {
int number = 0;
while (i < s.size() && s[i] >= '0')
number = 10 * number + s[i++] - '0';
total += signs.back() * number;
signs.pop_back();
i--;
}
else if (c == ')')
signs.pop_back();
else if (c != ' ')
signs.push_back(signs.back() * (c == '-' ? -1 : 1));
}
return total;
}