剑指offer 表示数值的字符串 python

版权声明:本文为博主原创文章,需转载可以私信我,同意后即可 https://blog.csdn.net/Sun_White_Boy/article/details/83659370

题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

样例

例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

闲话:
一开始就想通过制定规则然后挨个遍历,如果不符合条件,就输出False.
看了眼讨论区,还有人画状态转移图
妈也,我这么懒肯定不会用那种方法.

想法一:
使用float类型转换函数,出错就捕获错误,返回False

class Solution:
    # s字符串
    def isNumeric(self, s):
        try:
            ss = float(s)
            return True
        except:
            return False

想法二:
直接使用正则

'''
使用re判断
* 匹配前面出现的正则表达式零次或多次
+ 匹配前面出现的正则表达式1次或多次
? 匹配前面出现的正则表达式0次或1次
正则中三部分:
1. ^[\+\-]?[0-9]* 判断字符串头是否存在符号后面
2. (\.[0-9]*)? 判断是否存在小数点
3. ([eE][\+\-]?[0-9]+)? 这里[0-9]后面是+,因为出现e或者E后必须有数字.
'''
import re
class Solution:
    # s字符串
    def isNumeric(self, s):
        return re.match(r"^[\+\-]?[0-9]*(\.[0-9]*)?([eE][\+\-]?[0-9]+)?$", s)

最后

刷过的LeetCode或剑指offer源码放在Github上了,希望喜欢或者觉得有用的朋友点个star或者follow。
有任何问题可以在下面评论或者通过私信或联系方式找我。
联系方式
QQ:791034063
Wechat:liuyuhang791034063
CSDN:https://blog.csdn.net/Sun_White_Boy
Github:https://github.com/liuyuhang791034063

猜你喜欢

转载自blog.csdn.net/Sun_White_Boy/article/details/83659370