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