Sponsored
Sponsored
A regular expression can be used to validate if a string is a valid number by matching patterns that define valid numbers. This pattern matches integers with optional signs, decimals, and scientific notation.
Time Complexity: O(n) due to scanning each character in the string.
Space Complexity: O(1) since we're using a fixed-size pattern.
1#include <regex>
2#include <string>
3#include <iostream>
4
5bool isNumber(std::string s) {
6 std::regex pattern("^[\+-]?((\d+\.?|\.\d)\d*)([eE][\+-]?\d+)?$");
7 return std::regex_match(s, pattern);
8}
9
10int main() {
11 std::cout << isNumber("53.5e93") << std::endl; // 1
12 std::cout << isNumber("1a") << std::endl; // 0
13 return 0;
14}
C++ provides the regex library which allows easy matching of the string against a regular expression pattern. This solution checks for valid number patterns like optional signs, decimal points, and exponents.
This approach involves parsing the string based on its characters and their positions. By iterating through the string, the method confirms whether it forms a valid number pattern based on segment rules.
Time Complexity: O(n) where n is the length of the string.
Space Complexity: O(1) using variables to track state.
1using System;
2
class ValidNumberIterative {
public static bool IsNumber(string s) {
int n = s.Length;
int i = 0;
bool numSeen = false, dotSeen = false, eSeen = false;
while (i < n && s[i] == ' ') i++;
if (i < n && (s[i] == '+' || s[i] == '-')) i++;
while (i < n) {
if (char.IsDigit(s[i])) {
numSeen = true;
} else if (s[i] == '.') {
if (dotSeen || eSeen) return false;
dotSeen = true;
} else if (s[i] == 'e' || s[i] == 'E') {
if (eSeen || !numSeen) return false;
eSeen = true;
numSeen = false;
} else if (s[i] == '+' || s[i] == '-') {
if (s[i - 1] != 'e' && s[i - 1] != 'E') return false;
} else if (s[i] == ' ') {
while (i < n && s[i] == ' ') i++;
return i == n;
} else {
return false;
}
i++;
}
return numSeen;
}
public static void Main() {
Console.WriteLine(IsNumber("53.5e93")); // True
Console.WriteLine(IsNumber("1a")); // False
}
}
This C# iteration method processes each character and applies decision rules to confirm compliance with valid number forms, making sure it handles signs, dots, and exponents correctly.