65 有效數字 python

2021-09-02 13:59:00 字數 1471 閱讀 3905

驗證給定的字串是否為數字。

例如:"0"=>true

" 0.1 "=>true

"abc"=>false

"1 a"=>false

"2e10"=>true

說明:我們有意將問題陳述地比較模糊。在實現**之前,你應當事先思考所有可能的情況。

這道題應該難在考慮各種情況。所有的字元可以分為六大類,空格,符號,數字,小數點,自然底數和其他字元,我們需要五個標誌變數,num, dot, exp, sign分別表示數字,小數點,自然底數和符號是否出現,numaftere表示自然底數後面是否有數字,那麼我們分別來看各種情況:

- 空格: 我們需要排除的情況是,當前位置是空格而後面一位不為空格,但是之前有數字,小數點,自然底數或者符號出現時返回false。

- 符號:符號前面如果有字元的話必須是空格或者是自然底數,標記sign為true。

- 數字:標記num和numaftere為true。

- 小數點:如果之前出現過小數點或者自然底數,返回false,否則標記dot為true。

- 自然底數:如果之前出現過自然底數或者之前從未出現過數字,返回false,否則標記exp為true,numaftere為false。

- 其他字元:返回false。

最後返回num && numaftere即可。

class solution:

def isnumber(self, s):

""":type s: str

:rtype: bool

"""num,dot,exp,sign=false,false,false,false

numaftere=true

n=len(s)

for i in range(n):

if s[i]==' ':

if i0 and s[i-1]!='e'and s[i-1]!=' ':

return false

sign=true

elif s[i]>='0' and s[i]<='9':

num=true

numaftere=true

elif s[i]=='.':

if dot or exp:

return false

dot=true

elif s[i]=='e':

if exp or (not num):

return false

exp=true

numaftere=false

else:

return false

return num and numaftere

65 有效數字

驗證給定的字串是否為數字。例如 0 true 0.1 true abc false 1 a false 2e10 true 說明 我們有意將問題陳述地比較模糊。在實現 之前,你應當事先思考所有可能的情況。更新於 2015 02 10 c 函式的形式已經更新了。如果你仍然看見你的函式接收 const ...

65有效數字

驗證給定的字串是否可以解釋為十進位制數字。例如 0 true 0.1 true abc false 1 a false 2e10 true 90e3 true 1e false e3 false 6e 1 true 99e2.5 false 53.5e93 true 6 false 3 false ...

65 有效數字

題目描述 有效數字 按順序 可以分成以下幾個部分 乙個小數或者整數 可選 乙個 e 或 e 後面跟著乙個整數 小數 按順序 可以分成以下幾個部分 可選 乙個符號字元 或 下述格式之一 至少一位數字,後面跟著乙個點 至少一位數字,後面跟著乙個點 後面再跟著至少一位數字 乙個點 後面跟著至少一位數字 整...