File tree 2 files changed +66
-0
lines changed
2 files changed +66
-0
lines changed Original file line number Diff line number Diff line change 34
34
## Week 4 🚧
35
35
1 . [ Unique Morse Code Words] ( https://leetcode.com/explore/challenge/card/november-leetcoding-challenge/567/week-4-november-22nd-november-28th/3540/ ) ➡️ [ CPP Solution] ( Week4/uniqueMorseRepresentations.cpp )
36
36
2 . [ House Robber III] ( https://leetcode.com/explore/challenge/card/november-leetcoding-challenge/567/week-4-november-22nd-november-28th/3541/ ) ➡️ [ CPP Solution] ( Week4/rob.cpp )
37
+ 3 . [ Basic Calculator II] ( https://leetcode.com/explore/challenge/card/november-leetcoding-challenge/567/week-4-november-22nd-november-28th/3542/ ) ➡️ [ CPP Solution] ( Week4/calculate.cpp )
37
38
38
39
## Week 5 🚧
39
40
Coming soon...
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ private:
3
+ int getPrecedence (char op) {
4
+ if (op == ' *' || op == ' /' )
5
+ return 1 ;
6
+
7
+ return 0 ;
8
+ }
9
+
10
+ int performOperation (char op, int op1, int op2) {
11
+ switch (op) {
12
+ case ' *' :
13
+ return op1 * op2;
14
+ case ' /' :
15
+ return op1 / op2;
16
+ case ' +' :
17
+ return op1 + op2;
18
+ case ' -' :
19
+ return op1 - op2;
20
+ default :
21
+ return 0 ;
22
+ }
23
+ }
24
+ public:
25
+ int calculate (string s) {
26
+ stack<int > operandStack;
27
+ stack<char > operatorStack;
28
+ int n = s.size ();
29
+
30
+ for (int i = 0 ; i < n; ++i) {
31
+ if (isdigit (s[i])) {
32
+ int num = 0 ;
33
+ while (i < n && isdigit (s[i])) {
34
+ num *= 10 ;
35
+ num += s[i] - ' 0' ;
36
+ i++;
37
+ }
38
+ i--;
39
+ operandStack.push (num);
40
+ } else if (s[i] != ' ' ) {
41
+ int chPrecedence = getPrecedence (s[i]);
42
+
43
+ while (!operatorStack.empty () && chPrecedence <= getPrecedence (operatorStack.top ())) {
44
+ char op = operatorStack.top (); operatorStack.pop ();
45
+ int op2 = operandStack.top (); operandStack.pop ();
46
+ int op1 = operandStack.top (); operandStack.pop ();
47
+
48
+ operandStack.push (performOperation (op, op1, op2));
49
+ }
50
+
51
+ operatorStack.push (s[i]);
52
+ }
53
+ }
54
+
55
+ while (!operatorStack.empty ()) {
56
+ char op = operatorStack.top (); operatorStack.pop ();
57
+ int op2 = operandStack.top (); operandStack.pop ();
58
+ int op1 = operandStack.top (); operandStack.pop ();
59
+
60
+ operandStack.push (performOperation (op, op1, op2));
61
+ }
62
+
63
+ return operandStack.top ();
64
+ }
65
+ };
You can’t perform that action at this time.
0 commit comments