請實現乙個函式來判斷字串是否表示數值(包括整數和小數)。
例:
字串"+100"、「5e2」、"-123"、「3.1416」、"-1e-16"都表示數值,時間複雜度:o(n)但"12e"、「1a3.14」、「1.2.3」、「±5」、"12e+5.4"都不是。
空間複雜度:o(1)
def
numeric_strings
(s):
""" :param s: num string
:return: is num
"""defis_num
(s, allow_dot =
true
, allow_e =
true):
""" :param s: num string
:param allow_dot: if allow .
:param allow_e: if allow e/e
:return: bool
"""number =
['0'
,'1'
,'2'
,'3'
,'4'
,'5'
,'6'
,'7'
,'8'
,'9'
] sign =
['+'
,'-'
]if s[0]
in sign:
i =1else
: i =
0while i <
len(s)
:str
= s[i]
ifstr
in number:
pass
elif
str==
'.'and allow_dot:
return is_num(s[i+1:
], allow_dot =
false
)elif
strin
['e'
,'e'
]and allow_e and i +
1<
len(s)
:return is_num(s[i+1:
], allow_dot =
false
, allow_e =
false
)else
:return
false
i +=
1return
true
return is_num(s)
我的**將各部分的判斷都寫在乙個函式裡,可能像作者那樣將函式功能分開會便於**的維護。 劍指Offer20 表示數值的字串
題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。考察的是 模式匹配的策略 的完整性 我們首先分析一下子可能是數值的字串的格式 在數值之前...
劍指offer 20 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如 字串 100 5e2 123 3.1416 和 1e 16 都表示數值 但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是 使用指標的指標 a.b e e c 對a b c 的判斷 class solution if ...
劍指 Offer 20 表示數值的字串
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 0123 都表示數值,但 12e 1a3.14 1.2.3 5 1e 16 及 12e 5.4 都不是。解題思路 首先分析一下符合數值的字串模式,當字串遵循模式a b e ec 或者....