题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
代码:
class Solution:
# s字符串
def isNumeric(self, s):
# write code here
s = s.lower()
hasE, decimal = False, False
indexE = -1
for i in range(len(s)):
if s[i] == 'e':
#e不能出现两次,并且不能再首位和末尾
if i == len(s) - 1 or i == 0 or hasE:
return False
indexE = i
hasE = True
#如果不是规定的字符,比如a,则False
if not ('0'<=s[i]<='9') and s[i] not in ['e', '+', '-', '.']:
return False
if s[i] == '+' or s[i] == '-':
#不能再末尾
if i == len(s) - 1:
return False
#不在首位前一位应为e
if i != 0 and s[i - 1] != 'e':
return False
if s[i] == '.':
#不能出现两次,不能再末尾
if i == len(s) - 1 or decimal:
return False
#不能出现在e的后面
if i > indexE and indexE >0:
return False
decimal = True
return True
print(Solution().isNumeric("123.45e+6"))