nikunjsoni

772

Jul 2nd, 2021
134
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Solution {
  2. public:
  3.     int calculate(string s) {
  4.         int i = 0;
  5.         return parseExpr(s, i);
  6.     }
  7.    
  8.     int parseExpr(string& s, int& i) {
  9.         vector<int> nums;
  10.         char op = '+';
  11.         for (; i < s.length() && op != ')'; i++) {
  12.             if (s[i] == ' ') continue;
  13.             int n = s[i] == '(' ? parseExpr(s, ++i) : parseNum(s, i);
  14.             switch(op) {
  15.                 case '+' : nums.push_back(n); break;
  16.                 case '-' : nums.push_back(-n); break;
  17.                 case '*' : nums.back() *= n; break;
  18.                 case '/' : nums.back() /= n; break;
  19.             }            
  20.             op = s[i];
  21.         }
  22.         int res = 0;
  23.         for (int n : nums) res += n;
  24.         return res;
  25.     }
  26.    
  27.     int parseNum(string& s, int& i) {
  28.         int n = 0;
  29.         while(i < s.length() && isdigit(s[i]))
  30.             n = s[i++] - '0' + 10 * n;
  31.         return n;
  32.     }
  33. };
RAW Paste Data