1. 程式人生 > >劍指offer 表示數值的字串 python

劍指offer 表示數值的字串 python

題目描述

請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。

樣例

例如,字串"+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