難度:困難。
標籤:數學,字串。
這道題要考慮太多的情況,除了題目中提到的,重點注意以下情況:
"-.2"
".2"
"3."
"3.e2"
"-"
".""e232"
"232e"
"-."
""-e33""
"-232-2"
"23.3.e3"
在考慮了種種情況後,覺得應該沒問題了,竟然因為手誤導致了問題,開始將第6行的判斷條件的』-『寫成了』1』,錯誤**如下:
if
(s[0]==
'+'|| s[0]
=='1'
)
導致用例【3e1】沒有通過,吐了。
然後改了這個手誤後,直接通過。
正確解法:
class
solution
int k =0;
for(
;i < n; i++
)return k !=0;
}bool
isdigit
(char c)
public
:bool
isnumber
(string s)
elseif(
(s[i]
=='e'
|| s[i]
=='e'
)&& i !=0)
else
if(s[i]
=='.'
&&!hasdot)
else
if(n ==1)
return
false
;else
if(i ==0&&
!isdigit
(s[i +1]
))return
false
;else
if(i == n -1&&
!isdigit
(s[i -1]
))return
false
; hasdot =
true;}
elseif(
!isdigit
(s[i]))
}return
true;}
};
2021.06.17重刷,一次通過
正確解法:
class
solution
return
true;}
bool
isnum
(char c)
public
:bool
isnumber
(string s)
bool dotflag =
true
, signflag =
true
;for
(int i =
0; i < n; i++
)else
if(s[i]
=='.'
&& dotflag)
else
if(i == n -1)
else
}elseif(
(s[i]
=='+'
|| s[i]
=='-'
)&& signflag)
elseif(
!isnum
(s[i]))
}return
true;}
};
leetcode 65 有效數字
不知道這道題對於演算法有什麼作用,而且每個人可能理解有效的數字都不一樣,怎麼能證明考慮周到不周到呢,不斷的提交就完了 下面的是我認為肯定不合格但是卻是合格的一些代表 45.e 67 true 1 true 1.true 0123 true bool isnumber std string s if ...
leetcode65 有效數字
驗證給定的字串是否為數字。例如 0 true 0.1 true abc false 1 a false 2e10 true 說明 我們有意將問題陳述地比較模糊。在實現 之前,你應當事先思考所有可能的情況。更新於 2015 02 10 c 函式的形式已經更新了。如果你仍然看見你的函式接收 const ...
leetcode65 有效數字
作弊法 利用try except機制,直接判斷是否可以通過float 函式 class solution def isnumber self,s str bool try float s return true except return false 面試的時候這麼寫基本byebye 設定幾個布林值...