劍指Offer面試題20 表示數值的字串

2021-09-21 02:16:24 字數 843 閱讀 7824

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1e-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

解題思路:

關鍵點是:表示數值得字串遵循的模式a[.[b]][e|ec]或者.b[e|ec]

其中a為數值的整數部分,b緊跟著小數點為數值的小數部分,c緊跟著'e'或者'e'為數值的指數部分。

a和c都是可能以'+'或者'-'開頭的0~9的數字串;b也是0~9的數字串,但前面不能有正負號。

函式scanunsignedinteger用來掃瞄字串中0~9的數字(類似於乙個無符號整數),可以用來匹配前面數值模式中的b部分。

函式scaninteger掃瞄可能以表示正負的'+'和'-'為起始的0~9的數字(類似於乙個可能帶正負號的整數),用來匹配前面數值模式中的a和c部分。

解題**:

class solution 

//如果出現e或者e,則接下來是數字的指數部分

if(*string=='e'||*string=='e')

return numeric && *string=='\0';

}private:

bool scanunsignedinteger( char** str)

bool scaninteger( char** str)

};

劍指offer 面試題20

題目 從外向裡順時針列印矩陣 做題心得 該題本質上並未考查複雜的資料結構及演算法,而是考查了快速找規律的能力!要想作出此題,必須先有絕對清晰的思路,否則越寫越亂 因為涉及到很多的迴圈列印 自己當時的思路基本符合作者提供的思路 先考慮怎麼列印一圈 四個迴圈 再考慮如何結束列印 和作者的意圖不太一樣,自...

劍指Offer 面試題20(表示數值的字串)

這裡是引用 題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 及 1e 16 都表示數值,但 12e 1a3.14 1.2.3 5 及 12e 5.4 都不是。示例 include bool scanunsignedinteger c...

劍指offer面試題20 表示數值的字串

1 分成三類 整數 小數,指數 2 找到公用的判斷邏輯比如空判斷,去空格判斷等等放在抽象類中 3 給三類定義成三個判斷類,4 主方法在呼叫的時候,依次去使用三個判斷類去執行即可 此外還有狀態機的判斷方法,但是我的狀態圖不知道怎麼下手 inte ce numbervalidate 抽象類中定義用來檢查...