1. 题目
2. 题解
读完题目后,有一种看到 “形式语言与自动机” 的感觉,整体读取字符的过程可以看作是如下的状态转换(注:在状态B下,需进行整数范围判断)
实现代码如下:
func myAtoi(s string) int {
var state int = 0
var r string = ""
for _, value := range s{
switch state{
case 0:
switch value{
case ' ': state=0
case '+','-':
r=r+string(value)
state = 1
case '0','1','2','3','4','5','6','7','8','9':
r=r+string(value)
state = 2
default: state = 4
}
case 1:
switch value{
case '0','1','2','3','4','5','6','7','8','9':
r=r+string(value)
state = 2
default: state = 4
}
case 2:
switch value{
case '0','1','2','3','4','5','6','7','8','9':
r=r+string(value)
state = 2
default: state = 3
}
case 3:
break
default:
r="0"
}
}
res, _ :=strconv.Atoi(r)
return boundary(res)
}
func boundary(res int) int{
if res<math.MinInt32{
return math.MinInt32
}else if res>math.MaxInt32{
return math.MaxInt32
}else{
return res
}
}
提交结果如下: