劍指offer 表示數值的字串

2022-11-24 15:11:26 字數 800 閱讀 2982

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

題目分析:首先搞清楚什麼樣的字串表示數值。a[.b][e|e c]或者.b[e|e c]

a[.b][e|e c]表示:a代表數值的(帶符號)整數部分,[.b]可以沒有,但是如果有了'.',則必須要有小數點後點的小數部分b(無符號的數值),指數e|e可以沒有,但是有的話,必須後面帶(帶符號的)數值部分

同理:.b[e|e c], 沒有a部分

1

class

solution

8return str >before;9}

10bool scaninteger(char* &str)

14return

scanunsignedinteger(str);15}

16public:17

bool isnumeric(char* string)18

22bool numeric = scaninteger(string

);23

//如果出現'.',則接下來是數字的小數部分

24if (*string == '.'

) 32

if (*string == '

e' || *string == 'e'

) 39

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

;40}41 };

劍指Offer 表示數值的字串

請實現一個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路一 利用正規表示式,對字串中的每個字元進行判斷分析 思路二 利用自身的格式校驗 思路三 對...

劍指 Offer 20 表示數值的字串

可以用有限自動機 也可以暴力去做,就是提交的次數有點多,我提交了20次。不停的測試所有的邊界條件 大體思路是 先判斷有沒有e 1.有e則用substr 得到前後兩個數字str1,str2 2.沒有e得到s 寫兩個判斷函式judge1,judge2 judge1 判斷小數,整數 judge2 判斷整數...

劍指offer 22表示數值的字串

請實現一個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。題解 表示數值的字串遵循模式a b elec 或者.b elec 其中a為數值的整數部分,b緊...