王廷瑋|數位醫療|智慧醫療: 65. Valid Number WFU

2024年7月4日 星期四

65. Valid Number

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