这道题主要考察的是动态规划算法。
P.S.
需要考虑到空格的问题,当空格在字符串最前面和最后面时为true,但是在两个字符中间时为false.
时间和内存消耗以及源代码如下:
bool isUnsignedNumber(char** s_point)
{
char* before = *s_point;
while (**s_point >= '0' && **s_point <= '9' && **s_point != '\0')
{
(*s_point)++;
}
if (*s_point > before)
{
return true;
}
return false;
}
bool isSignedNumber(char** s_point)
{
if (**s_point == '+' || **s_point == '-')
{
(*s_point)++;
}
return isUnsignedNumber(s_point);
}
bool isNumber(char* s){
while (*s == ' ')
{
s++;
}
if (*s == '\0')
{
return false;
}
bool rightNumber = isSignedNumber(&s);
if (*s == '.')
{
s++;
rightNumber = isUnsignedNumber(&s) || rightNumber;
}
if (*s == 'e' || *s == 'E')
{
s++;
rightNumber = rightNumber && isSignedNumber(&s);
}
// if ((*s == '\0') && rightNumber)
// {
// return true;
// }
while (*s == ' ')
{
s++;
}
if ((*s == '\0') && rightNumber)
{
return true;
}
return false;
}