2 1 劍指offer 表示數值的字串

2021-09-10 12:54:26 字數 2399 閱讀 9004

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。

全面考慮數值中,整數,小數,指數部分的特點,比如哪些部分可以出現正負號,而哪些部分不能。

'.'前或後可以沒有沒有數字

'e/e』前面必須有數字,後面必須是整數

def

isnumeric

(s):

spl = s.split(

'.')

iflen

(spl)

>2:

# 不能有超過(含)兩個小數點的

return

false

elif

len(spl)

>1:

# decimal

integer = spl[0]

last = spl[1]

if integer[0]

=='+'

or integer[0]

=='-'

: integer = integer[1:

]ifnot checkint(integer)

:return

false

# 小數部分不能帶符號

if(last[0]

=='+'

or last[0]

=='-'):

return

false

else

: integer =

none

last = spl[0]

# 整數小數都為空

if(integer ==

none

andlen

(last)==0

):return

false

spe = last.split(

'e')

spe = last.split(

'e')

exponent =

none

iflen

(spe)

>1:

aheade = spe[0]

exponent = spe[1]

elif

len(spe)

>1:

aheade = spe[0]

exponent = spe[1]

else

: aheade = spe[0]

# 小數部分是0-9

if integer !=

none

and checkint(aheade)

:return

true

# 無小數且無指數,如果不是純整數,那麼就不是數值

if integer ==

none

:if aheade[0]

=='+'

or aheade[0]

=='-'

: aheade = aheade[1:

]if checkint(aheade)

:return

true

return

false

# 指數前/後面要有數字

iflen

(aheade)==0

orlen

(exponent)==0

:return

false

# 指數後面不能是小數

iflen

(exponent.split(

'.')

)>1:

return

false

if exponent[0]

=='+'

or exponent[0]

=='-'

: exponent = exponent[1:

]if checkint(exponent)

:return

true

defcheckint

(s):

l =[str

(i)for i in

range(10

)]# 定義整數轉換的字串陣列

for i in

range

(len

(s))

:if s[i]

in l:

continue

else

:return

false

return

true

劍指Offer 表示數值的字串

題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。基本思路 字串應滿足通式a b e ec 或者.b e ec 其中,a c表示有 或無 ...

表示數值的字串 劍指offer

這道題寫起來比較繁瑣,需要考慮 號是否出現在第乙個位置,是否出現一次,以e為分割前後是不是正確的格式,e前可以為浮點數或者整數,e後只能是整數。因此如果把函式分成三個子函式來寫就好多了,乙個函式判斷是不是整數,乙個判斷是不是浮點數,乙個判斷e前後是否合法。include include bool i...

劍指offer 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...