驗證給定的字串是否為數字。
例如:"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 後面跟著乙個整數 小數 按順序 可以分成以下幾個部分 可選 乙個符號字元 或 下述格式之一 至少一位數字,後面跟著乙個點 至少一位數字,後面跟著乙個點 後面再跟著至少一位數字 乙個點 後面跟著至少一位數字 整...