leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0224.cpp (738B)
0 class Solution {
1 public:
2 int calculate(const string &s) const {
3 int res = 0;
4 vector<int> signs(2, 1);
5 for (int i = 0; i < s.size(); i++) {
6 if (s[i] >= '0') {
7 int number = 0;
8 while (i < s.size() && isdigit(s[i])) {
9 number = 10 * number + (s[i++] - '0');
10 }
11 res += signs.back() * number;
12 signs.pop_back();
13 i--;
14 } else if (s[i] == '(' && s[i + 1] == '-') {
15 } else if (s[i] == ')')
16 signs.pop_back();
17 else if (s[i] != ' ')
18 signs.push_back(signs.back() * (s[i] == '-' ? -1 : 1));
19 }
20 return res;
21 }
22 };