劍指offer:表示數值的字符串
阿新 • • 發佈:2019-04-23
return false 1.2 整數 註意 但是 符號 描述 not 題目描述
請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
class Solution: def isNumeric(self, s): """ 表示數值的字符串遵循模式: A[.[B]][e|EC]或者.B[e|EC] 其中A為整數部分,B為緊跟著小數點的小數部分,C為指數部分 其中A和C都可能含有符號,B不能含有符號 A不是必須的,如果沒有A那麽B不能為空 :param s: 待判斷的字符串 :return: True / False """ if not s: return False # 查找屬於A的部分,只有在遇到非數字的部分才退出循環 if s[0] in ‘+-‘: s = s[1:] isBreak = False for i in range(len(s)): if ‘0‘ <= s[i] <= ‘9‘: continue isBreak = True break if not isBreak: return True s = s[i:] # 如果遇到了非數字部分,說明A部分已經查找完成。 # 查找B部分 if s and s[0] == ‘.‘: s = s[1:] isBreak = False for i in range(len(s)): if ‘0‘ <= s[i] <= ‘9‘: continue isBreak = True break if not isBreak: return True s = s[i:] # 查找C部分 if s and s[0] in ‘eE‘: s = s[1:] # 註意C部分必須要有數字,不能只有一個e if not s: return False if s[0] in ‘+-‘: s = s[1:] isBreak = False for i in range(len(s)): if ‘0‘ <= s[i] <= ‘9‘: continue isBreak = True break if not isBreak: return True return False
劍指offer:表示數值的字符串