題目:
有效數字(按順序)可以分成以下幾個部分:
- 一個?小數?或者?整數
- (可選)一個?
'e'
?或?'E'
?,后面跟著一個?整數小數(按順序)可以分成以下幾個部分:
- (可選)一個符號字符(
'+'
?或?'-'
)- 下述格式之一:
- 至少一位數字,后面跟著一個點?
'.'
- 至少一位數字,后面跟著一個點?
'.'
?,后面再跟著至少一位數字- 一個點?
'.'
?,后面跟著至少一位數字整數(按順序)可以分成以下幾個部分:
- (可選)一個符號字符(
'+'
?或?'-'
)- 至少一位數字
部分有效數字列舉如下:
["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"]
給你一個字符串?
s
?,如果?s
?是一個?有效數字?,請返回?true
?。來源:力扣(LeetCode)
鏈接:力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺
示例:
示例 1:
輸入:s = "0"
輸出:true
示例 2:輸入:s = "e"
輸出:false
示例 3:輸入:s = "."
輸出:false
解法:
使用float函數,如果能轉成浮點型說明是有效數字,否則會報錯,但是要拍出特殊情況,如‘inf’‘nan’之類。
知識點:
1.str.lower():將字符串中的所有大寫字母轉換為小寫字母,返回字符串。
2.float(object):將十進制整數、十進制浮點數字符串或布爾值轉化為十進制浮點數,返回浮點數。object是待轉化成浮點數的對象,可省略,省略時返回0.0。當非十進制的字符串作為參數時,超出數字字符時會報ValueError錯。
3.try+except:使用格式如下。在執行try中內容時如果報錯,就會去except部分,except可以設置不同種類的報錯。如果不報錯,except不會執行。
try:
? ? ? ? xxx
except?xxxError:
? ? ? ? xxx
代碼:
class Solution:def isNumber(self, s: str) -> bool:try:if 'n' in s.lower():return Falsefloat(s)return Trueexcept ValueError:return False