解题思路:这个没有什么技巧,就是把所有的情况都考虑到就可以了
class Solution:
def isNumber(self, s: str) -> bool:
tabel = ['e', '.', '+', '-']
s = s.strip()
if len(s) > 0 and (s[0] == '+' or s[0] == '-'):
s = s[1:]
lens = len(s)
if lens == 0:
return False
i = 0
while(i < lens):
if 0 <= (ord(s[i]) - ord('0')) <= 9:
i += 1
continue
elif s[i] in tabel:
if (s[i] == '+' or s[i] == '-') and 'e' in tabel:
return False
elif s[i] == '.' :
if 'e' not in tabel or (i >= (lens-1) and i <= 0):
return False
tabel.remove('.')
elif s[i] == 'e':
if i <= 0 or i >= (lens-1):
return False
if s[i+1] == '+' or s[i+1] == '-':
if i + 2 >= lens:
return False
i += 1
tabel.remove('+')
tabel.remove('-')
if s[i-1] == '.' and (i - 1) <= 0:
return False
tabel.remove('e')
i += 1
else:
return False
return True