Basic Calculator Posted on 2018-09-25 Descriptionhttps://leetcode.com/problems/basic-calculator/description/ Solution123456789101112131415161718192021222324252627282930313233343536373839404142434445class Solution {public: int calculate(string s) { int index = 0; return this->calculateFrom(index, s); } int calculateFrom(int& index, string& s) { int ret = 0; int sign = 1; while(index < s.size()) { while(s[index] == ' ') index += 1; switch (s[index]) { case '-': index += 1; sign = -1; break; case '(': index += 1; ret += sign * this->calculateFrom(index, s); continue; case ')': index += 1; return ret; case '+': index += 1; sign = 1; continue; default: //Number ret += sign * this->extractNumber(s, index); } } return ret; } int extractNumber(string& s, int& index) { int ret = 0; while (index < s.size() && s[index] <= '9' && s[index] >= '0') { ret = ret * 10 + (s[index] - '0'); index += 1; } return ret; }};