Leetcode做题日记:65. 有效数字(PYTHON)

本文记录了在LeetCode上解决65题‘有效数字’的过程。题目要求判断输入字符串是否符合数字规则。文章分享了作者初次尝试的思路,即遍历字符串并依据规则判断,以及后续优化后的解决方案,最终实现代码能在56ms内完成,性能位于前15%。
摘要由CSDN通过智能技术生成

验证给定的字符串是否为数字。

例如:

“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%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值