File tree Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int calculate (string s) {
4+
5+ int result=0 , sumOrDiff=1 ;
6+ stack<int > stack;
7+
8+ for (int i = 0 ; i < s.size (); i++) {
9+ char temp = s[i];
10+ if (temp >= ' 0' && temp <= ' 9' ) {
11+ int num = 0 ;
12+ while (i < s.size () && s[i]>=' 0' && s[i]<= ' 9' )
13+ num = num * 10 + (s[i++] - ' 0' );
14+ result += sumOrDiff * num;
15+ i--;
16+ }
17+ else if (temp ==' +' )
18+ sumOrDiff = 1 ;
19+ else if (temp ==' -' )
20+ sumOrDiff = -1 ;
21+ else if (temp ==' (' ) {
22+ stack.push (result);
23+ stack.push (sumOrDiff);
24+ result = 0 ;
25+ sumOrDiff = 1 ;
26+ }
27+ else if (temp ==' )' ) {
28+ result *= stack.top ();
29+ stack.pop ();
30+ result += stack.top ();
31+ stack.pop ();
32+ }
33+ }
34+ return result;
35+ }
36+ };
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def calculate (self , s : str ) -> int :
3+
4+ result = 0
5+ sumOrDiff = 1
6+ stack = []
7+ temp = 0
8+
9+ for char in s :
10+ if char .isdigit ():
11+ temp = temp * 10 + int (char )
12+ elif char in ["-" ,"+" ]:
13+ result = result + temp * sumOrDiff
14+ temp = 0
15+ if char == "-" :
16+ sumOrDiff = - 1
17+ else :
18+ sumOrDiff = 1
19+ elif char == "(" :
20+ stack .append (result )
21+ stack .append (sumOrDiff )
22+ sumOrDiff = 1
23+ result = 0
24+ elif char == ")" :
25+ result += sumOrDiff * temp
26+ result *= stack .pop ()
27+ result += stack .pop ()
28+ temp = 0
29+
30+ return result + temp * sumOrDiff
31+
You can’t perform that action at this time.
0 commit comments