0065.有效数字
方法一:分类讨论
时间复杂度 $O(n)$,空间复杂度 $O(1)$。
func isNumber(s string) bool {
if len(s) > 0 && (s[0] == '+' || s[0] == '-') {
s = s[1:]
}
if len(s) == 0 {
return false
}
point := false
for i := 0; i < len(s); i++ {
if s[i] == '.' && !point {
if (i > 0 && s[i-1] >= '0' && s[i-1] <= '9') || (i+1 < len(s) && s[i+1] >= '0' && s[i+1] <= '9') {
point = true
continue
}
return false
} else if strings.ToUpper(s[i:i+1]) == "E" && i+1 < len(s) && i > 0 {
for j := i + 1; j < len(s); j++ {
if s[j] == '.' || strings.ToUpper(s[j:j+1]) == "E" {
return false
}
}
return isNumber(s[i+1:])
} else if s[i] < '0' || s[i] > '9' {
return false
}
}
return true
}