65. 有效数字

65. 有效数字

方法一:作弊,看下代码细节
try的使用方法:

try:
    正常的操作
   ......................
except:
    发生异常,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

代码:
注意下面是float()这个函数将字符串转换为小数

class Solution:
    def isNumber(self, s: str) -> bool:
        try:
            num = float(s)
            return True
        except:
            return False

方法二:有限状态机
难点是正确画出状态机:
这个图不太对。其中状态3,5,7后面还要加个状态8,转换的条件是字符为空格。


看下代码注释的地方,看下state是怎么定义的

class Solution:
    def isNumber(self, s: str) -> bool:
        # 这个列表每一个代表一个状态
        # 每行的字典表示该状态下的状态转换关系
        state = [
            {'blank':0, 'digital':6, 'sign':1, 'dot':2},
            {'digital':6, 'dot':2},
            {'digital':3},
            {'digital':3, 'e':4, 'blank':8},
            {'digital':5, 'sign':7},
            {'digital':5, 'blank':8},
            {'digital':6, 'dot':3, 'e':4, 'blank':8},
            {'digital':5},
            {'blank':8}
        ]

        curstate = 0
        for c in s:
            # 注意这里的c.isdigit(),这是字符串的一个方法,判断是否全是数字
            if c.isdigit():
                temp = 'digital'
            elif c==' ':
                temp = 'blank'
            elif c=='.':
                temp = 'dot'
            # in 可以直接再字符串上使用
            elif c in '+-':
                temp = 'sign'
            elif c=='e':
                temp = 'e'
            else:
                return False

            if temp in state[curstate]:
                curstate = state[curstate][temp]
            else:
                return False

        if curstate in [3,5,6,8]:
            return True
        else:
            return False

关键词:try...except...,有限状态转换机,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容