class Solution:
def isNumber(self, s: str) -> bool:
s=s.strip()
if not len(s): return False
if s[0]=='+' or s[0]=='-': s=s[1:]
if len(s)==0 or (len(s)==1 and s[0]=='.'): return False
dot=0; e=0
n=len(s)
for i in range(len(s)):
if s[i].isdigit(): continue
elif s[i]=='.':
dot+=1
if dot>1 or e:
return False
elif s[i]=='e' or s[i]=='E':
e+=1
if i==0 or e>1 or i==n-1 or (i==1 and s[0]=='.'): return False
elif s[i]=='+' or s[i]=='-':
if (i==0 or (s[i-1]!='e' and s[i-1]!='E')) or i==n-1: # 这里的 and 总是写成 or
return False
else:
return False
return True
剑指 Offer 20. 表示数值的字符串
最新推荐文章于 2022-11-04 15:40:02 发布