劍指offer第53題 表示數值的字串

2022-05-02 13:39:12 字數 1028 閱讀 6142

題目:

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

這個題的難點在**?就是要我們對於數值類字串有乙個清晰的了解:

比如,+,-號出現的位置,.出現的位置,e出現的位置。

先看別人的**:

1

class

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 否...