面試題55 表示數值的字串

2021-08-05 21:29:49 字數 1207 閱讀 1601

題目描述

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

思路:

1、在數值字串的最前面,可能有乙個字元表示』+』、』-『號。正負號之後,注意:如果是字串結尾,說明整個字串只有乙個正負號,則返回false。

2、正負號之後必須是數字,我們開始遍歷數字,直到遇到非數字。

3、如果遇到了』.』,說明是小數,則繼續遍歷後續的數字

4、如果遇到了』e』或』e』,說明是科學計數法,則按照科學計數法的方式進行下一步判斷。

所以,要寫兩個函式:乙個遍歷數字,乙個判斷科學計數法是否正確。

最後注意一些特殊輸入:

+、-、+0、-0、0.0、1.23.45、123e.0,以及包含其它字元的輸入。。

c++**:

class solution 

if(*string == '+' || *string == '-')

if(*string == '\0')

bool numeric = true;

scandigits(&string);

if(*string != '\0')

}else

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

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

}// 遍歷數字

void scandigits(char** string)

}// 判斷科學計數法是否正確

面試題54 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。這道題沒什麼別的技巧,按照數值的表示規則,逐個掃瞄字串,看是否符合要求。數值有如下幾種情況 1...

面試題20 表示數值的字串

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

面試題20 表示數值的字串

題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 0123 都表示數值,但 12e 1a3.14 1.2.3 5 1e 16 及 12e 5.4 都不是。示例 輸入 100 輸出 true 思想 這個題最簡單的做法就是遍歷字串,判斷字串是...