Go判断字符串是否表示数值

tech2022-11-04  111

题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。

func isNumber(s string) bool { // 去除首尾空格 s = strings.TrimSpace(s) for i := 0; i < len(s); i++ { // 存在 e 或 E, 判断是否为科学计数法 if s[i] == 'e' || s[i] == 'E' { return isSciNum(s[:i], s[i+1:]) } } // 否则判断是否为整数或小数 return isInt(s) || isDec(s) } // 是否为科学计数法 func isSciNum(num1, num2 string) bool { // e 前后字符串长度为0 是错误的 if len(num1) == 0 || len(num2) == 0 { return false } // e 后面必须是整数,前面可以是整数或小数 4 + return (isInt(num1) || isDec(num1)) && isInt(num2) } // 判断是否为小数 func isDec(s string) bool { // eg: 11.15, -0.15, +10.15, 3., .15, // err: +. 0.. match1, _ := regexp.MatchString(`^[\+-]?\d*\.\d+$`, s) match2, _ := regexp.MatchString(`^[\+-]?\d+\.\d*$`, s) return match1 || match2 } // 判断是否为整数 func isInt(s string) bool { match, _ := regexp.MatchString(`^[\+-]?\d+$`, s) return match }
最新回复(0)