题解 | #表示数值的字符串#

表示数值的字符串

http://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8

求解步骤:

1.对单独的"."进行处理;

if str == ".":
    return False

2.去除字符串中的空格,组成新字符串(定义filter函数过滤);

def is_space(self, s):
    return s != ' '

str_rm_space = filter(self.is_space, str)
new_str = ""
for s in list(str_rm_space):
    new_str += s

3.字符串中出现两个及以上"."进行处理, 用str.split('.')划分即可判断包含几个".";

# 检查小数点个数
dot_check = new_str.split('.')
if len(dot_check) > 2:
    return False

4.利用正则表达式匹配数字和小数

# 匹配数字和小数,包括小数
if re.match('^(\+|\-|)(\d+)(\.(\d+|))?$', new_str):
    return True
if re.match('^(\+|\-|)(\.\d+)$', new_str):
    return True

5.利用正则表达式匹配科学计数法数字

if re.match('^(\+|\-|)(\d+)(\.\d+)(e|E)(\+|\-|)(\d+)(\.\d+)?$', new_str):
    return True
if re.match('^(\+|\-|)(\d+)(\.)?(e|E)(\-|)(\d+)(\.\d+)?$', new_str):
    return True

整体代码如下

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return bool布尔型
#
class Solution:
    def is_space(self, s):
        return s != ' '
        
    def isNumeric(self , str: str) -> bool:
        # write code here
        # 去除空格
        if str == ".":
            return False
        
        str_rm_space = filter(self.is_space, str)
        new_str = ""
        for s in list(str_rm_space):
            new_str += s
        # 检查小数点个数
        dot_check = new_str.split('.')
        if len(dot_check) > 2:
            return False
        import re
        # 匹配数字和小数,包括小数
        if re.match('^(\+|\-|)(\d+)(\.(\d+|))?$', new_str):
            return True
        if re.match('^(\+|\-|)(\.\d+)$', new_str):
            return True
        # 匹配科学计数法数字
        if re.match('^(\+|\-|)(\d+)(\.\d+)(e|E)(\+|\-|)(\d+)(\.\d+)?$', new_str):
            return True
        if re.match('^(\+|\-|)(\d+)(\.)?(e|E)(\-|)(\d+)(\.\d+)?$', new_str):
            return True
        return False

全部评论

相关推荐

2024-12-17 19:24
门头沟学院 Java
黑皮白袜臭脚体育生:看你后备隐藏能源多不多,最坏的情况就是每个星期的三天课程都不在周末,那么每个星期公司那边请一天半假,半天假请上午,上午正常上课,早点溜去请病假或者中午去请病假,然后坐高铁回公司,记得提前请学校那边实训课下午的病假,就说肚子痛,然后下午就公司上班,第二个实训周同样,但病假理由是牙齿痛,像肚子痛和牙齿痛这种校医院不方便查,会同意你出去检查的,很多时候都不需要你的检查报告,这里的问题就是最坏情况时距离过远的话可能要坐飞机才能赶上,然后请假的话不一定请了就有回应,可能要等老师,然后距离不远不近的情况到公司了也是迟到,得想个说辞掩盖一下,顺便晚上多加点班补下时间,特殊情况特殊处理,正常不建议加班常态化,这样每个星期可以多凑出来半天,老师面子也有了公司那边也不至于无法交差,就是有点费存粮,如果哪个星期的三天课有一天或两天在周末的话那就更好应对了。实习还是建议去,学校的课懂的都懂
点赞 评论 收藏
分享
2024-11-28 21:33
广东工业大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务