mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
23 lines
615 B
Go
23 lines
615 B
Go
package leetcode
|
|
|
|
func isNumber(s string) bool {
|
|
numFlag, dotFlag, eFlag := false, false, false
|
|
for i := 0; i < len(s); i++ {
|
|
if '0' <= s[i] && s[i] <= '9' {
|
|
numFlag = true
|
|
} else if s[i] == '.' && !dotFlag && !eFlag {
|
|
dotFlag = true
|
|
} else if (s[i] == 'e' || s[i] == 'E') && !eFlag && numFlag {
|
|
eFlag = true
|
|
numFlag = false // reJudge integer after 'e' or 'E'
|
|
} else if (s[i] == '+' || s[i] == '-') && (i == 0 || s[i-1] == 'e' || s[i-1] == 'E') {
|
|
continue
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
// avoid case: s == '.' or 'e/E' or '+/-' and etc...
|
|
// string s must have num
|
|
return numFlag
|
|
}
|