Skip to content

Commit f1cee26

Browse files
sangam14saiyam1814
authored andcommitted
Create basic_calculator.go
1 parent bc61bec commit f1cee26

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package basic_calculator
2+
3+
func calculate(s string) int {
4+
ret := 0
5+
stack := []int{}
6+
sign := 1
7+
for i := 0; i < len(s); i++ {
8+
if s[i] >= '0' && s[i] <= '9' {
9+
num := 0
10+
for ; i < len(s) && s[i] >= '0' && s[i] <= '9'; i++ {
11+
num = 10*num + int(s[i]-'0')
12+
}
13+
ret += sign * num
14+
i--
15+
} else if s[i] == '+' {
16+
sign = 1
17+
} else if s[i] == '-' {
18+
sign = -1
19+
} else if s[i] == '(' {
20+
stack = append(stack, ret, sign)
21+
ret = 0
22+
sign = 1
23+
} else if s[i] == ')' {
24+
signTmp := stack[len(stack)-1]
25+
retTmp := stack[len(stack)-2]
26+
stack = stack[:len(stack)-2]
27+
ret = signTmp*ret + retTmp
28+
sign = 1
29+
}
30+
}
31+
return ret
32+
}

0 commit comments

Comments
 (0)