Skip to content

Commit e7ba2e9

Browse files
Create Basic Calculator.cpp
1 parent 6f1f7c5 commit e7ba2e9

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Basic Calculator.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
class Solution {
2+
public:
3+
int calculate(string s) {
4+
int result=0;
5+
int sum=0;
6+
int sign=1;
7+
stack<int>st;
8+
int n=s.size();
9+
for(int i=0;i<n;i++)
10+
{
11+
if(isdigit(s[i]))
12+
{
13+
sum=s[i] -'0';
14+
while(i+1<n && isdigit(s[i+1]))
15+
{
16+
sum = sum*10 + (s[i+1] -'0');
17+
i++;
18+
}
19+
result+=sum*sign;
20+
}
21+
22+
else if(s[i] == '+')
23+
{
24+
sign=1;
25+
}
26+
else if (s[i] == '-')
27+
{
28+
sign=-1;
29+
}
30+
else if (s[i] == '(')
31+
{
32+
st.push(result);
33+
st.push(sign);
34+
result=0;
35+
sign=1;
36+
}
37+
else if(s[i] == ')')
38+
{
39+
int xsign=st.top();
40+
st.pop();
41+
int xresult= st.top();
42+
st.pop();
43+
result=result*xsign + xresult;
44+
}
45+
}
46+
47+
return result;
48+
}
49+
};

0 commit comments

Comments
 (0)