劍指Offer 20 表示數值的字串

2021-09-08 06:42:04 字數 1370 閱讀 7409

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

例:

字串"+100"、「5e2」、"-123"、「3.1416」、"-1e-16"都表示數值,

但"12e"、「1a3.14」、「1.2.3」、「±5」、"12e+5.4"都不是。

時間複雜度:o(n)

空間複雜度: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 或者....