Lintcode417 Valid Number solution 題解

【題目描述】

Validate if a given string is numeric.

給定一個字符串,驗證其是否為數(shù)字。

【題目鏈接】

www.lintcode.com/en/problem/valid-number/

【題目解析】

這是一道檢查字符串輸入是否為合法的題目?;疽?guī)則是按照科學(xué)計數(shù)法,所以會出現(xiàn)的特殊字符有以下幾個:符號位‘+’,‘-’,小數(shù)點‘.’,還有‘e’和‘E’,剩下的就只有數(shù)字0-9了,其他字符如果出現(xiàn)就是非法字符,返回false。數(shù)字字符在哪里出現(xiàn)都是ok的,我們主要考慮幾個特殊字符的情況。

對于小數(shù)點出現(xiàn)的時候,我們要滿足一下這些條件:(1)前面不能有小數(shù)點或者‘e’和‘E’;(2)前一位是數(shù)字(不能是第一位)或者后一位要是數(shù)字(不能是最后一位)。

對于正負(fù)號出現(xiàn)的情況,要滿足條件:(1)必須是第一位或者在‘e’和‘E’后一位;(2)后一位要是數(shù)字。

對于‘e’和‘E’的情況,要滿足:(1)前面不能有‘e’和‘E’出現(xiàn)過;(2)不能是第一位(前面沒數(shù)字科學(xué)計數(shù)沒有意義)或者最后一位(后面沒數(shù)字就不用寫指數(shù)了)。

根據(jù)上面列舉的情況,我們用兩個標(biāo)簽和做前后位的判斷來實現(xiàn),算法復(fù)雜度比較明顯是O(n)的,只需要O(1)的額外空間。

【參考答案】

www.jiuzhang.com/solutions/valid-number/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容