题目描述:实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
思路:先确定能表示数值的规则,若正负号不在首位或者不在e之后,返回False。若最后一位为符号,返回False。小数点出现多次返回False。e之后出现小数点返回False。e出现多次也返回False。出现除e外其它字母返回False。总结一下规则再模拟判断即可。
# -*- coding:utf-8 -*-
class Solution:
# s字符串
def isNumeric(self, s):
if(len(s) == 0):
return False
length = len(s)
i = 0
sig = False
exp = False
while(i <= length-1):
if(s[i] == 'e' or s[i] == 'E'):
if(exp == False):
exp = True
else:
return False
else:
if(s[i]=='+' or s[i] == '-'):
if(i != 0):
if(s[i-1] == 'e' or s[i-1] == 'E'):
pass
else:
return False
elif(s[i] == '.'):
if(sig == True):
return False
elif(exp == True):
return False
else:
sig = True
elif(s[i] < '0' or s[i] > '9'):
return False
i += 1
if(s[-1] > '9' or s[-1] < '0'):
return False
else:
return True
if __name__ == '__main__':
t = Solution()
string = "-.123"
print(t.isNumeric(string))