zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 27-1

    Valid Number

    要点:用几个boolean flag来区分状态:spa,exp,dot,num。为了简化程序,单向pass开始的空格和’+’/’-’。这些boolean状态flag只是在之后的main loop里标记状态

    • spa:用来标记空格不在字符中出现,所以当遇到空格并且spa为False,ok,如果非空格但是spa为True,false。所以这里用if … elif ...来处理
    • num: 一旦在num里,除了dot不能出现其他字符。另外num用来作为返回值和排除exp没有number的情况(“.”)
    • exp:一旦在exp里,不能再出现dot,
    • dot:exp和dot有一点不同,前者必须在num里,后者不用
    • 再次出现’+’/‘-’:不一定是第二次,意思是在main loop里num之后,那么左边必须为exp
    class Solution(object):
        def isNumber(self, s):
            """
            :type s: str
            :rtype: bool
            """
            num = False
            exp = False
            dot = False
            spa = False
            
            i = 0
            while i<len(s) and s[i]==' ':
                i+=1
            
            if i<len(s) and (s[i]=='+' or s[i]=='-'):
                i+=1
            
            while i<len(s):
                if s[i]==' ':
                    spa = True
                elif spa:
                    return False
                elif ord(s[i])-ord('0')<=9 and ord(s[i])-ord('0')>=0:
                    num = True
                elif s[i]=='.':
                    if dot or exp: 
                        return False
                    dot = True
                elif s[i]=='e':
                    if not num or exp:
                        return False
                    exp = True
                    num = False
                elif s[i]=='+' or s[i]=='-':
                    if s[i-1]!='e':
                        return False
                else:
                    return False
                i+=1
            return num
                    
            
    
  • 相关阅读:
    推自己的镜像到网易云
    supervisord常见问题
    supervisord的配置
    一文解读SDN (转)
    一文解读ZooKeeper (转)
    使用 Docker 和 Nginx 打造高性能的二维码服务 (转)
    一文解读Docker (转)
    一文解读分布式架构 (转)
    一文解读分布式事务 (转)
    一文读懂工业大数据 (转)
  • 原文地址:https://www.cnblogs.com/absolute/p/5678072.html
Copyright © 2011-2022 走看看