From 6b0e32d66ab60f3c0b1ee3a42b77da9a0ed107ee Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Tue, 9 Nov 2021 11:42:53 +0000 Subject: [PATCH] string-to-integer-atoi --- string-to-integer-atoi/sol.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 string-to-integer-atoi/sol.go diff --git a/string-to-integer-atoi/sol.go b/string-to-integer-atoi/sol.go new file mode 100644 index 0000000..58535f7 --- /dev/null +++ b/string-to-integer-atoi/sol.go @@ -0,0 +1,29 @@ +package main + +var MIN, MAX = -(1 << 31), (1 << 31) - 1 + +func myAtoi(s string) int { + m, n, c := 1, true, 0 + for _, char := range s { + if n && char == ' ' { + continue + } else if n && char == '-' { + m = -1 + } else if !(n && char == '+') { + char_n := int(char - '0') + if char_n < 0 || char_n > 9 { + break + } + c *= 10 + c += char_n + if c < 0 || c > MAX { + if m == 1 { + return MAX + } + return MIN + } + } + n = false + } + return c * m +}