Skip to content

Commit 0b518a4

Browse files
Basic Calculator (question 224) has been solved.
1 parent 0b4709a commit 0b518a4

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

Q224 - Basic Calculator/0224.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
};

Q224 - Basic Calculator/0224.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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+

0 commit comments

Comments
 (0)