lc-go/solutions/0/q8/solution.go

57 lines
720 B
Go

// Package q8 implements a solution for https://leetcode.com/problems/string-to-integer-atoi/
package q8
const (
MIN = -(1 << 31)
MAX = 1<<31 - 1
)
func myAtoi(s string) int {
sign := 0
num := 0
Loop:
for i := range len(s) {
c := s[i]
switch c {
case '-':
if sign != 0 {
break Loop
}
sign = -1
case '+':
if sign != 0 {
break Loop
}
sign = 1
case ' ':
if sign != 0 {
break Loop
}
default:
if c < '0' || c > '9' {
break Loop
}
if sign == 0 {
sign = 1
}
num = num*10 + int(c-'0')
if sign*num < MIN {
num = -MIN
break Loop
}
if sign*num > MAX {
num = MAX
break Loop
}
}
}
return sign * num
}
var _ = myAtoi