leetcode第8题,实现字符串转换为整型
实现一个Atoi函数,使其能将字符串转化为整数
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。
当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。
思路
参考了大神的代码,从数组的指针出发, 寻找字符串中为的数字起始和末尾指针。分别定义为i和j,剩下的判断可以参考题目7。
代码
package main
import "fmt"
func main() {
result := myAtoi("123555")
fmt.Println("result= ", result)
}
func myAtoi(str string) int {
const (
int32Max = 1<<31 - 1
int32Min = -1 << 31
)
n := len(str)
var i, j int
neg := false //用来区分正负数的
for i = 0; i < n; i++ {
if str[i] >= '0' && str[i] <= '9' {
break
} else if str[i] == '+' {
i++
break
} else if str[i] == '-' {
neg = true
i++
break
} else if str[i] != ' ' {
return 0
}
}
for j = i; j < n; j++ {
if str[j] < '0' || str[j] > '9' {
break
}
}
ret := 0
for k := i; k < j; k++ {
cur := int(str[k] - '0')
ret = ret*10 + cur
if !neg {
if ret > int32Max {
return int32Max
break
}
} else {
if (-ret) < int32Min {
return int32Min
break
}
}
}
if neg == false {
return ret
} else {
return -ret
}
}
本文详细解析了LeetCode第8题,如何实现字符串到整型的转换。介绍了Atoi函数的实现过程,包括处理开头空格、正负号以及数字字符的组合,同时考虑了整数溢出的情况。

154

被折叠的 条评论
为什么被折叠?



