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.
1function isNumber(s) {
2 const pattern = /^[\+-]?((\d+\.?|\.\d)\d*)([eE][\+-]?\d+)?$/;
3 return pattern.test(s);
4}
5console.log(isNumber('53.5e93')); // true
6console.log(isNumber('1a')); // false
JavaScript’s RegExp
object method test
is used for matching the string against a regex pattern that specifies valid numerical forms.
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.
1#include <iostream>
2#include <cctype>
#include <string>
bool isNumber(const std::string& s) {
int i = 0, n = s.length();
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 (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;
}
int main() {
std::cout << isNumber("53.5e93") << std::endl; // true
std::cout << isNumber("1a") << std::endl; // false
return 0;
}
The C++ implementation traverses the input string and checks the presence of numbers, dots, e-signs according to rules. This iterative method recognizes which combinations make a valid or invalid number.