nikunjsoni

227

Jul 2nd, 2021
85
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.         stack<long long int> myStack;
  5.         char sign = '+';
  6.         long long int res = 0, tmp = 0;
  7.         for(int i = 0; i < s.size(); i++) {
  8.             if(isdigit(s[i]))
  9.                 tmp = 10*tmp + s[i]-'0';
  10.             if(!isdigit(s[i]) && !isspace(s[i]) || i == s.size()-1) {
  11.                 if(sign == '-')
  12.                     myStack.push(-tmp);
  13.                 else if(sign == '+')
  14.                     myStack.push(tmp);
  15.                 else {
  16.                     int num;
  17.                     if(sign == '*' )
  18.                         num = myStack.top()*tmp;
  19.                     else
  20.                         num = myStack.top()/tmp;
  21.                     myStack.pop();
  22.                     myStack.push(num);
  23.                 }
  24.                 sign = s[i];
  25.                 tmp = 0;
  26.             }
  27.         }
  28.         while(!myStack.empty()) {
  29.             res += myStack.top();
  30.             myStack.pop();
  31.         }
  32.         return res;
  33.     }
  34. };
RAW Paste Data