Skip to content

Latest commit

 

History

History

valid-number

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Valid Number

Difficulty

Hard

Problem

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

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

A 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. At least one digit, followed by a dot '.'.
    2. At least one digit, followed by a dot '.', followed by at least one digit.
    3. A dot '.', followed by at least one digit.

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

  1. (Optional) A sign character (either '+' or '-').
  2. At least one digit.

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

Example 4

Input: s = ".1"
Output: true

Constraints

1 <= s.length <= 20

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

Solutions (Click to expand)

Explanation

Procedural

  1. Skip any white space

  2. Check for a single sign + or -

  3. If we are at the end of the string, return false

  4. Check the next characters until we reach the end of the string, or reach the next non digit or . character. Keep track of the number of points and digits.

  5. If there are more than one points, or less than 1 digits, return false

  6. If the next character is e or E, repeat the same procedure for checking the next characters until the end of the string, or until the next non digit character.

  7. If we reach the end of the string, return true. If we are not at the end there are extra non digit or . character in the string, return false