题目描述:
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 "+100","5e2","-123","3.1416"和"-1E-16"
都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"
都不是。
解题思路1:
使用float类型转换函数,出错就捕获错误,返回False
代码1:
class Solution:
# s字符串
def isNumeric(self, s):
try:
ss = float(s)
return True
except:
return False
解题思路2:
正则表达式
代码2:
'''
使用re判断
* 匹配前面出现的正则表达式零次或多次
+ 匹配前面出现的正则表达式1次或多次
? 匹配前面出现的正则表达式0次或1次
正则中三部分:
1. ^[\+\-]?[0-9]* 判断字符串头是否存在符号后面
2. (\.[0-9]*)? 判断是否存在小数点
3. ([eE][\+\-]?[0-9]+)? 这里[0-9]后面是+,因为出现e或者E后必须有数字.
'''
import re
class Solution:
def isNumber(self, s):
return re.match(r"^[\+\-]?[0-9]*(\.[0-9]*)?([eE][\+\-]?[0-9]+)?$", s)
参考链接:
题目来源:
https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/