题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
解法:
class Solution {
public:
bool isNumeric(char* string)
{
if (string == nullptr || *string == '\0') return false;
bool isnumeric = false;
if (*string == '+' || *string == '-') string++; /* 正负号可有可无 */
while (*string >= '0' && *string <= '9') /* 扫描数字 */
{
isnumeric = true;
string++;
}
if (*string == '.') string++; /* 小数点可有可无 */
while (*string >= '0' && *string <= '9') /* 小数点后面数字 */
{
isnumeric = true;
string++;
}
if (isnumeric && (*string == 'e' || *string == 'E')) /* 有指数 */
{
string++;
isnumeric = false; /* 准备判断指数部分 */
if (*string == '+' || *string == '-') string++; /* 正负号可有可无 */
while (*string >= '0' && *string <= '9') /* 扫描数字 */
{
isnumeric = true;
string++;
}
}
return isnumeric && *string == '\0'; /* 处理完成应到字符串末尾 */
}
};