前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >例16数字判断

例16数字判断

作者头像
hankleo
发布2020-09-17 10:39:57
9440
发布2020-09-17 10:39:57
举报
文章被收录于专栏:Hank’s BlogHank’s Blog

问题描述 给定一个字符串,验证其是否为数字

问题示例 0判断为true 0.1判断为true abc判断为false 1 a判断为false 2e10判断为true

代码实现

代码语言:javascript
复制
#参数s是一个字符串,返回一个布尔值,有限的自动化

class Solution:
    def isNumber(self, s):
        INVALID=0; SPACE=1; SIGN=2; DIGIT=3; DOT=4; EXPONENT=5;
        #0无效,1空格,2符号,3数字,4小数点,5指数,6输入的数字
        transitionTable=[
            [-1,0,3,1,2,-1],
            [-1,8,-1,1,4,5],
            [-1,-1,-1,1,2,-1],
            [-1,8,-1,4,-1,5],
            [-1,-1,6,7,-1,-1],
            [-1,-1,-1,7,-1,-1],
            [-1,8,-1,7,-1,-1],
            [-1,8,-1,-1,-1,-1]
        ]
        state=0;i=0
        while i<len(s):
            inputtype=INVALID
            if s[i]=='': inputtype=SPACE
            elif s[i]=='-' or s[i]=='+':inputtype=SIGN
            elif s[i] in '0123456789':inputtype=DIGIT
            elif s[i]=='.':inputtype=DOT
            elif s[i]=='e' or s[i]=='E':inputtype=EXPONENT
            state=transitionTable[state][inputtype]
            if state==-1:return False
            else: i+=1
        return state==1 or state==4 or state==7 or state==8

if __name__ == "__main__":
    temp=Solution()
    string1="1"
    string2="23aa"
    print("输入:"+string1)
    print("输出:"+str(temp.isNumber(string1)))
    print("输入:"+string2)
    print("输出:"+str(temp.isNumber(string2)))

运行结果 输入1 输出True 输入23aa 输出False

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档