• LeetCode刷题(python版)——Topic65.有效数字


    一、题设

    有效数字(按顺序)可以分成以下几个部分:

    1. 一个 小数 或者 整数
    2. (可选)一个 'e' 或 'E' ,后面跟着一个 整数

    小数(按顺序)可以分成以下几个部分:

    1. (可选)一个符号字符('+' 或 '-'
    2. 下述格式之一:
      1. 至少一位数字,后面跟着一个点 '.'
      2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
      3. 一个点 '.' ,后面跟着至少一位数字

    整数(按顺序)可以分成以下几个部分:

    1. (可选)一个符号字符('+' 或 '-'
    2. 至少一位数字

    部分有效数字列举如下:["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

    部分无效数字列举如下:["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

    给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

    示例 1:

    输入:s = "0"
    输出:true
    

    示例 2:

    输入:s = "e"
    输出:false
    

    示例 3:

    输入:s = "."
    输出:false

    二、基本思路

            根据题意,合法的表达为:(小数/整数)[E/e (整数)] 

            思路就是先找到e/E,再判断前面是否为小数或者整数,后面是否为整数即可

            step1:找到e/E:遍历数组,找到e/E break跳出即可。

            step2:判断一个数是否为整数:有标志位无关紧要跳过,当出现小数点'.',则返回False;当出现一个数字时,即可返回True,其余情况都是返回False.

            step3:判断一个数是否为小数:有标志位同样跳过,当同时满足出现小数点一次,数字一次以上时,即可返回True,其余情况都是返回False.

    三、代码实现

    1. def isNumber(self, s):
    2. def check(st,IsInt):
    3. start = 0
    4. if start < len(st) and (st[start] == '+' or st[start] == '-'):
    5. start += 1
    6. point,digit = False,False
    7. for i in range(start,len(st)):
    8. if st[i] == '.' :
    9. if point or IsInt:
    10. return False
    11. point = True
    12. elif st[i] >= '0' and st[i] <= '9':
    13. digit = True
    14. else:
    15. return False
    16. return digit
    17. eidx = -1
    18. check("0",False)
    19. for i in range(len(s)):
    20. if s[i] == 'e' or s[i] == 'E':
    21. eidx = i
    22. break
    23. if eidx == -1:
    24. return check(s,False)
    25. return check(s[0:eidx],False) and check(s[eidx+1:len(s)],True)

    四、效率总结

     

  • 相关阅读:
    简单句翻译
    优化系统报错提示信息,提高人机交互(一)
    2310月问题描述
    Leetcode_49:字母异位词分组
    【算法】妙不可言---贪心算法
    基于JavaWeb的果蔬生鲜交易系统
    RC-u1 不要浪费金币
    2024.06.05【读书笔记】丨生物信息学与功能基因组学(第十一章 分子水平的系统发生和进化 第一部分)【AI测试版】
    3.6 空值的处理
    七星创客新零售系统:颠覆性商业模式的崛起
  • 原文地址:https://blog.csdn.net/weixin_54039182/article/details/127871669