资讯专栏INFORMATION COLUMN

LeetCode65. Valid Number -- 判断合法数字

jindong / 2732人阅读

摘要:描述分析该题的说明比较模糊,所以需要慢慢进行尝试来弄清楚哪些是合法的数字。代码去除前后的空格小数点前面不能出现和小数点前面不能出现,并且需要有数字保证后面也有数字符号只能再位和后面一位

描述

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

分析

该题的说明比较模糊,所以需要慢慢进行尝试来弄清楚哪些是合法的数字。整理了以下规则:

符号只能出现在最前面或者字符e后面一位

" . "只能e的前面,且只能有一个小数点

e最多只能出现一次,且前面必须有数字,后面也必须有数字

所以按照数字、小数点、e和符号这四类列出规则就可以了,记住e后面必须有数字,所以需要增加一个变量numberAftereSeen

代码
class Solution:
    def isNumber(self, s):
        """
        :type s: str
        :rtype: bool
        """
        # 去除前后的空格
        temp_s = s.strip()
        numberSeen = False
        pointSeen = False
        eSeen = False
        numberAftereSeen = True
        for i in range(len(temp_s)):
            if temp_s[i].isdigit():
                numberSeen = True
                numberAftereSeen = True
            elif temp_s[i] == ".":
                # 小数点前面不能出现e和小数点
                if eSeen or pointSeen:
                    return False
                pointSeen = True
            elif temp_s[i] == "e":
                # e前面不能出现e,并且需要有数字
                if eSeen or not numberSeen:
                    return False
                eSeen = True
                # 保证e后面也有数字
                numberAftereSeen = False
            elif temp_s[i] in ["+", "-"]:
                # 符号只能再0位和e后面一位
                if i != 0 and temp_s[i-1] != "e":
                    return False
            else:
                return False
        return numberSeen and numberAftereSeen

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41922.html

相关文章

  • leetcode65 valid number 正则表达式的运用

    摘要:完整的正则表达式为。代码如下翻译如果我们看到数字,就将设为如果看到小数点,则判断是否已有小数点或是,因为后只能有整数只能遇到一次,如果第一次遇到但是没有遇到数字,则返回错误。 题目要求 Validate if a given string is numeric. Some examples: 0 => true 0.1 => true abc => false 1 a => fa...

    DobbyKim 评论0 收藏0
  • LeetCode 306. Additive Number

    摘要:描述累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含个数。说明累加序列里的数不会以开头,所以不会出现或者的情况。示例输入输出解释累加序列为。 LeetCode 306. Additive Number Description Additive number is a string whose digits can form additive sequen...

    GeekQiaQia 评论0 收藏0
  • leetcode306. Additive Number

    摘要:为了减少无效遍历,我们可以在寻找第一个数字和第二个数字的时候及时终止。我们可以知道第一个数字的长度不应该超过字符串长度的一般,第二个数字的长度无法超过字符串长度减去第一个数字的长度。因此一旦遇到,在判断完作为加数时是否合法后,直接跳出循环。 题目要求 Additive number is a string whose digits can form additive sequence....

    2shou 评论0 收藏0
  • leetcode36 Valid Sudoku 查看数独是否合法

    摘要:如果重复则不合法,否则极为合法。在这里我们使用数组代替作为存储行列和小正方形的值得数据结构。我存储这所有的行列小正方形的情况,并判断当前值是否重复。外循环则代表对下一行,下一列和下一个小正方形的遍历。 题目要求 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa...

    wing324 评论0 收藏0
  • [LeetCode] 65. Valid Number

    Problem Validate if a given string can be interpreted as a decimal number. Some examples: 0 => true 0.1 => true abc => false 1 a => false 2e10 => true -90e3 => true 1e => false e3 => false 6e-...

    SoapEye 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<