zoukankan      html  css  js  c++  java
  • 65. Valid Number

    很无聊的一道题目歧义也很多

    判断一个字符串是否能够用十进制数表示,下面是一堆范例

    "0" => true
    " 0.1 " => true
    "abc" => false
    "1 a" => false
    "2e10" => true
    " -90e3   " => true
    " 1e" => false
    "e3" => false
    " 6e-1" => true
    " 99e2.5 " => false
    "53.5e93" => true
    " --6 " => false
    "-+3" => false
    "95a54e53" => false

    总结一下规则,一个数字分为底数部分和指数部分

    底数部分的开头符号位没有或者为1位,数字部分纯数字或者带小数点,有整数部分(整数部分不为空)小数点后可以无数字,没有整数部分小数点后必须有数字

    e之后只能为整数

    想到的方法有字符串检查,分别用标识符代表小数点和e的个数,然后进行字符串的检查;正则表达;

    下面是我的正则写法

    class Solution:
        def isNumber(self, s):
            """
            :type s: str
            :rtype: bool
            """
            if re.match(r's*(+|-)?((d+.?d*)|(.d+))(e(+|-)?(d)+)?s*$', s):
                return True
            return False

    还看见一种写法,虽然是对的但是还是不要这样做:

    class Solution(object):
        def isNumber(self, s):
            try:
                float(s)
            except ValueError:
                return False
            return True
  • 相关阅读:
    二维前缀和
    素数筛法
    dp-最大连续子序列的和
    dp-最长递增子序列 (LIS)
    dp-完全背包(题)
    dp-多重背包
    dp-完全背包
    DP-01背包 (题)
    DP- 01背包问题
    DP-直线分割递推
  • 原文地址:https://www.cnblogs.com/mangmangbiluo/p/10138688.html
Copyright © 2011-2022 走看看