Validate if a given string is numeric.python
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
git
該題的說明比較模糊,因此須要慢慢進行嘗試來弄清楚哪些是合法的數字。整理了如下規則:code
e
後面一位e
的前面,且只能有一個小數點e
最多隻能出現一次,且前面必須有數字,後面也必須有數字因此按照數字、小數點、e
和符號這四類列出規則就能夠了,記住e
後面必須有數字,因此須要增長一個變量numberAftereSeen
。ip
class Solution: def isNumber(self, s): """ :type s: str :rtype: bool """ # 去除先後的空格 temp_s = s.strip() numberSeen = False pointSeen = False eSeen = False numberAftereSeen = True for i in range(len(temp_s)): if temp_s[i].isdigit(): numberSeen = True numberAftereSeen = True elif temp_s[i] == ".": # 小數點前面不能出現e和小數點 if eSeen or pointSeen: return False pointSeen = True elif temp_s[i] == "e": # e前面不能出現e,而且須要有數字 if eSeen or not numberSeen: return False eSeen = True # 保證e後面也有數字 numberAftereSeen = False elif temp_s[i] in ["+", "-"]: # 符號只能再0位和e後面一位 if i != 0 and temp_s[i-1] != "e": return False else: return False return numberSeen and numberAftereSeen