题解 | #表示数值的字符串#

表示数值的字符串

https://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8

暴力全部模拟。写的时候能看出来很多重复的。不想改了。
class Solution:
    def isNumeric(self, str: str) -> bool:
        i, length = 0, len(str)
        while str[i] == " ":
            i += 1
            if i == length:
                return False
        if str[i] in "+-":
            i += 1
            if i == length:
                return False

        # 小数中的'.'+数字的情况,包括科学计数
        if str[i] == ".":
            i += 1
            if i == length:  # 时刻牢记i+=1之后要记得判断是否到尾部了
                return False
            if not "0" <= str[i] <= "9":
                return False
            while "0" <= str[i] <= "9":
                i += 1
                if i == length:
                    return True
            if str[i] == " ":
                while str[i] == " ":
                    i += 1
                    if i == length:
                        return True
                return False
            if str[i] in "eE":
                i += 1
                if i == length:
                    return False
                if str[i] in "+-":
                    i += 1
                    if i == length:
                        return False
                if not "0" <= str[i] <= "9":
                    return False
                while "0" <= str[i] <= "9":
                    i += 1
                    if i == length:
                        return True
                if str[i] == " ":
                    while str[i] == " ":
                        i += 1
                        if i == length:
                            return True
                    return False
                return False
            return False

        # 数字开头的情况三种(整数、数字+'.'、数字+'.'+数字)
        if "0" <= str[i] <= "9":
            while "0" <= str[i] <= "9":
                i += 1
                if i == length:
                    return True
            # 整数的情况,包括科学计数
            if str[i] == " ":
                while str[i] == " ":
                    i += 1
                    if i == length:
                        return True
                return False
            if str[i] in "eE":
                i += 1
                if i == length:
                    return False
                if str[i] in "+-":
                    i += 1
                    if i == length:
                        return False
                if not "0" <= str[i] <= "9":
                    return False
                while "0" <= str[i] <= "9":
                    i += 1
                    if i == length:
                        return True
                if str[i] == " ":
                    while str[i] == " ":
                        i += 1
                        if i == length:
                            return True
                    return False
                return False
            # 小数中的数字+'.'的情况,包括科学计数
            if str[i] == ".":
                i += 1
                if i == length:
                    return True
                if str[i] == " ":
                    while str[i] == " ":
                        i += 1
                        if i == length:
                            return True
                    return False
                if str[i] in "eE":
                    i += 1
                    if i == length:
                        return False
                    if str[i] in "+-":
                        i += 1
                        if i == length:
                            return False
                    if not "0" <= str[i] <= "9":
                        return False
                    while "0" <= str[i] <= "9":
                        i += 1
                        if i == length:
                            return True
                    if str[i] == " ":
                        while str[i] == " ":
                            i += 1
                            if i == length:
                                return True
                        return False
                    return False
                # 小数中的数字+'.'+数字的情况,包括科学计数
                if not "0" <= str[i] <= "9":
                    return False
                while "0" <= str[i] <= "9":
                    i += 1
                    if i == length:
                        return True
                if str[i] == " ":
                    while str[i] == " ":
                        i += 1
                        if i == length:
                            return True
                    return False
                if str[i] in "eE":
                    i += 1
                    if i == length:
                        return False
                    if str[i] in "+-":
                        i += 1
                        if i == length:
                            return False
                    if not "0" <= str[i] <= "9":
                        return False
                    while "0" <= str[i] <= "9":
                        i += 1
                        if i == length:
                            return True
                    if str[i] == " ":
                        while str[i] == " ":
                            i += 1
                            if i == length:
                                return True
                        return False
                    return False
                return False
            return False
        return False


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务