65. Valid Number
給定一個字符串 s,判斷 s 是否為有效的數字。
例如,以下所有字符串都是有效的數字:"2"、"0089"、"-0.1"、"+3.14"、"4."、"-.9"、"2e10"、"-90E3"、"3e+7"、"+6e-1"、"53.5e93"、"-123.456e789"。而以下則不是有效的數字:"abc"、"1a"、"1e"、"e3"、"99e2.5"、"--6"、"-+3"、"95a54e53"。
形式上,有效數字定義如下之一:整數數字後跟可選的指數。
小數數字後跟可選的指數。
整數數字定義為帶可選符號 '-' 或 '+' 後跟數字。
小數數字定義為帶可選符號 '-' 或 '+' 後跟以下定義之一:數字後跟一個點 '.'。
數字後跟一個點 '.' 再後跟數字。
一個點 '.' 後跟數字。
指數定義為帶有指數符號 'e' 或 'E' 後跟整數數字。
數字定義為一個或多個數字。
範例 1:
輸入:s = "0"
輸出:true
Python
import re
class Solution:
def isNumber(self, s: str) -> bool:
# Define a regex pattern for a valid number
pattern = re.compile(r'^[+-]?((\d+(\.\d*)?)|(\.\d+))([eE][+-]?\d+)?$')
# Use the pattern to match the input string
return pattern.match(s) is not None
16.4MB, 45ms
C++
#include <regex>
#include <string>
class Solution {
public:
bool isNumber(std::string s) {
// Define a regex pattern for a valid number
std::regex pattern(R"(^[+-]?((\d+(\.\d*)?)|(\.\d+))([eE][+-]?\d+)?$)");
// Use the pattern to match the input string
return std::regex_match(s, pattern);
}
};
264.07MB, 1429ms
Javascript
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
// Define a regex pattern for a valid number
const pattern = /^[+-]?((\d+(\.\d*)?)|(\.\d+))([eE][+-]?\d+)?$/;
// Use the pattern to test the input string
return pattern.test(s);
};
53.75MB, 83ms