字符串數(shù)字C++實現(xiàn)
這個問題真的狗!在力扣上面的題。判斷字符串是否符合數(shù)字類型規(guī)范(int,float,double)

????官方給的例程都是用的map寫了個狀態(tài)轉(zhuǎn)移表,然后根據(jù)表來判定是否能跑到最后。是否能轉(zhuǎn)移到一個合法的狀態(tài)。(反正我是想不出來這個方法!)
其實對于這個我也有一些自己的看法:
邏輯總體是分為三種不同的情況:
????if(E或e存在){
?????? ?e前的字符串取調(diào)用float判斷;
? ? ? ? e后的字符串調(diào)用int數(shù)判斷;
????????根據(jù)e前和e后的字符串都符合判斷,retun T/F;
????}
????if(小數(shù)點存在){
????????調(diào)用float判斷;return T/F;
????}
????if(小數(shù)點不存在){
????????調(diào)用int判斷;return T/F;
????}
這樣子問題就被分解為了一個字符串是否符合float,是否符合int。
如果能使用正則表達式的話,到了這里就非常簡明了??上?,不能用正則。
浮點數(shù)三個判斷:
? ? 檢查正負符號是否在開頭且唯一,去掉正負符號之后,字符串不為空;
????檢查小數(shù)點是否有問題,去除小數(shù)點之后,符串不為空;
????檢查剩余下來的是否都是digit。
整數(shù)兩個判斷:
????檢查正負符號是否在開頭且唯一,去掉正負符號之后,字符串不為空;
????檢查剩余下來的是否都是digit。
按照這個思路,最終寫成了下面這個代碼:

標簽: