劍指offer 表示數值的字串 python
阿新 • • 發佈:2018-12-26
題目描述
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。
樣例
例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。
但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
閒話:
一開始就想通過制定規則然後挨個遍歷,如果不符合條件,就輸出False.
看了眼討論區,還有人畫狀態轉移圖
媽也,我這麼懶肯定不會用那種方法.
想法一:
使用float型別轉換函式,出錯就捕獲錯誤,返回False
class Solution:
# s字串
def isNumeric (self, s):
try:
ss = float(s)
return True
except:
return False
想法二:
直接使用正則
'''
使用re判斷
* 匹配前面出現的正則表示式零次或多次
+ 匹配前面出現的正則表示式1次或多次
? 匹配前面出現的正則表示式0次或1次
正則中三部分:
1. ^[\+\-]?[0-9]* 判斷字串頭是否存在符號後面
2. (\.[0-9]*)? 判斷是否存在小數點
3. ([eE][\+\-]?[0-9]+)? 這裡[0-9]後面是+,因為出現e或者E後必須有數字.
'''
import re
class Solution:
# s字串
def isNumeric(self, s):
return re.match(r"^[\+\-]?[0-9]*(\.[0-9]*)?([eE][\+\-]?[0-9]+)?$", s)
最後
刷過的LeetCode或劍指offer原始碼放在Github上了,希望喜歡或者覺得有用的朋友點個star或者follow。
有任何問題可以在下面評論或者通過私信或聯絡方式找我。
聯絡方式
QQ:791034063
Wechat:liuyuhang791034063
CSDN:https://blog.csdn.net/Sun_White_Boy
Github:https://github.com/liuyuhang791034063