当前位置:网站首页>65. Valid Number

65. Valid Number

2022-06-23 08:24:00 ujn20161222

valid number can be split up into these components (in order):

  1. decimal number or an integer.
  2. (Optional) An 'e' or 'E', followed by an integer.

decimal number can be split up into these components (in order):

  1. (Optional) A sign character (either '+' or '-').
  2. One of the following formats:
    1. One or more digits, followed by a dot '.'.
    2. One or more digits, followed by a dot '.', followed by one or more digits.
    3. A dot '.', followed by one or more digits.

An integer can be split up into these components (in order):

  1. (Optional) A sign character (either '+' or '-').
  2. One or more digits.

For example, all the following are valid numbers: ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"], while the following are not valid numbers: ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"].

Given a string s, return true if s is a valid number.

Example 1:

Input: s = "0"
Output: true

Example 2:

Input: s = "e"
Output: false

Example 3:

Input: s = "."
Output: false

Constraints:

  • 1 <= s.length <= 20
  • s consists of only English letters (both uppercase and lowercase), digits (0-9), plus '+', minus '-', or dot '.'.

Accepted

263.2K

Submissions

1.5M

class Solution:
    def isNumber(self, s: str) -> bool:
        def is_integer(s):
            return s.isdigit() or len(s)>0 and s[0] in "+-" and s[1:].isdigit()
        
        def is_decimal(s):
            parts=s.split(".")
            if len(parts)!=2:return False
            if is_integer(parts[0]) and parts[1].isdigit():return True
            if parts[0] in ["-","+",""] and parts[1].isdigit():return True
            if is_integer(parts[0]) and not parts[1]:return True
            
        s=s.lower()
        parts=s.split("e")
        if len(parts)>2:return False
        if not is_integer(parts[0]) and not is_decimal(parts[0]):return False
        return True if len(parts)==1 else is_integer(parts[1])
        

写两个函数is_integer is_decimal

然后分情况判断

原网站

版权声明
本文为[ujn20161222]所创,转载请带上原文链接,感谢
https://blog.csdn.net/ujn20161222/article/details/123675126