true" 0.1 " => true...">
美文网首页
[LeetCode]65、有效数字

[LeetCode]65、有效数字

作者: 河海中最菜 | 来源:发表于2019-08-04 09:48 被阅读0次

    题目描述

    验证给定的字符串是否可以解释为十进制数字。

    例如:

    "0" => true
    " 0.1 " => true
    "abc" => false
    "1 a" => false
    "2e10" => true
    " -90e3 " => true
    " 1e" => false
    "e3" => false
    " 6e-1" => true
    " 99e2.5 " => false
    "53.5e93" => true
    " --6 " => false
    "-+3" => false
    "95a54e53" => false

    说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。这里给出一份可能存在于有效十进制数字中的字符列表:

    数字 0-9
    指数 - "e"
    正/负号 - "+"/"-"
    小数点 - "."
    当然,在输入中,这些字符的上下文也很重要。

    思路解析

    1、出现'.',前面不能出现e或者“.”
    2、出现“e”,前面必须有数字或者不能出现e,并且后面继续能够出现数字
    3、数字的符合必须出现在e的后面,除了第一个

    class Solution:
        def isNumber(self, s: str):
            s = s.strip()
            #print(s)
            dot_seen = False
            e_seen = False
            num_seen = False
            for i, a in enumerate(s):
                if a.isdigit():
                    num_seen = True
                elif a == ".":
                    if e_seen or dot_seen:
                        return False
                    dot_seen = True
                elif a == "e":
                    if e_seen or not num_seen:
                        return False
                    num_seen = False
                    e_seen = True
                elif a in "+-":
                    if i > 0 and s[i - 1] != "e":
                        return False
                else:
                    return False
            return num_seen
        
        # def isNumber(self, s: str) -> bool:
        #     try:
        #         num = float(s)
        #         return True
        #     except:
        #         return False
    
    image.png

    相关文章

      网友评论

          本文标题:[LeetCode]65、有效数字

          本文链接:https://www.haomeiwen.com/subject/hsuedctx.html