題目:
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1e-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
這個題的難點在**?就是要我們對於數值類字串有乙個清晰的了解:
比如,+,-號出現的位置,.出現的位置,e出現的位置。
先看別人的**:
1class
solution
18else
if(*string=='.'
)24else
if(*string=='
e'||*string=='e'
)2535else
36return
false;37
}38return
true;39
}4041};
42//
注意表示數值的字串遵循的規則;
43//
在數值之前可能有乙個「+」或「-」,接下來是0到9的數字表示數值的整數部分,如果數值是乙個小數,那麼小數點後面可能會有若干個0到9的數字
44//
表示數值的小數部分。如果用科學計數法表示,接下來是乙個『e』或者『e』,以及緊跟著乙個整數(可以有正負號)表示指數。
分析其思路:
首先判斷第乙個字元是不是+,-號,之後依此對數字,小數點,字元e(e)進行判定。他的判頂規則是:
小數點最多只能有乙個,且只能出現在字元e(e)的前面!
字元e也只能有乙個,且其前面必須要有數字,最後補了乙個e後面如果只有+,-沒有數字,那麼是錯誤的。
也就是全程讓數字判斷,小數點判斷,和字母e判斷各司其職。這樣程式的思路是非常清晰的!!!
而我之前的想法是:
從第乙個字母到最後乙個字母,判斷字元的前後位置關係是否正確。並且區分了乙個字元,兩個字元,三個字元,多個字元的情況,顯然基於這種分類分思想是錯誤的!!!而基於特殊字元的位置資訊,是正確的,我們只需要對特殊字元進行判定即可。
劍指offer第53題 表示數值的字串
原始碼請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。class solution return true bool ispositivein...
劍指53題 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。傳入的引數是乙個字元數值str,如果直接使用,需要逐個檢查陣列的元素,分類討論是否符合數值格式。...
劍指offer 53 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題的主要解題思路如下 首先判斷字串是否為空,或者首元素是否為 若是是則直接返回false 否...