验证给定的字符串是否为数字。
例如:
“0” => true
" 0.1 " => true
“abc” => false
“1 a” => false
“2e10” => true
说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。
看似简单,于是我写下了第一次代码:
遍历一遍,想尽办法根据规则返回T或者F
提交了无数次,终于对一次的,首先先把首尾的0去掉,再把不同符号正确的情况写出来,其余都是F
num=['1','2','3','4','5','6','7','8','9','0']
i=0
j=0
b=0
bw=0
ss=[] #'.'的标志位,只能出现一次并且在e前面
se=[] #'e'的标志位,只能出现一次
sm=''
if len(s)==0 or (len(s)==1 and s[0] not in num):
return False
t=0
s=s[::-1]
while j <len(s): #s两边去空
if s[j]==' ':
s=s[1:]
continue
elif t==1:
break
else:
t=t+1
j=0
s=s[::-1]
while len(s)>0 and (s[0]=='+' or s[0]=='-'): #去掉开头的正负号
s=s[1:]
if (len(s)==0 or s[-1]=='e' or s[0]=='e' ) or (len(s)==1 and s[0] not in num):
return False
while i < len(s): #正式对几种情况if
if s[i] in num:
i=i+1
bw=bw+1
elif( s[i] =='-' or s[i]=='+') and (i!=len(s)-1) and s[i-1]=='e':
i=i+1
elif s[i]=='.' and (len(ss)==0 and len(se)==0) and ( (i==len(s)-1 and s[i-1] in num) or (i==0 and s[i+1] in num) or (i!=0 and s[i-1] in num) ):
ss.append(s[i])
i=i+1
elif s[i]=='e' and bw>0 and len(se)==0 :
i=i+1
se.append(s[i])
else:
return False
return True
56ms,排名15%