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
                    
            
    
  • 相关阅读:
    假期第六周总结
    假期第五周周总结
    navicat 链接oracle时出现的各种问题
    oracle 12如何解锁账户锁定状态及修改忘记的密码
    假期第四周周总结
    假期第三周周总结
    idea中使用git【推送,拉取,分支合并,解决冲突】
    Git分支,合并,切换分支的使用
    Git使用
    SpringCloud服务降级案列
  • 原文地址:https://www.cnblogs.com/absolute/p/5678072.html
Copyright © 2011-2022 走看看