终于AC啦,刚开始把题想简单了,这题最关键的是要考虑周全所有的可能,最重要的程序结构,这题把程序的逻辑表现的淋漓尽致。是不是提交比例最低的了,有意思,好题。
bool isNumber(const char *s) {
if(s==NULL||*s==0)
return false;
bool flag = false;// 表示.钱是不是有数字
while(*s==' ')
s++;
if(*s=='-'||*s=='+')
s++;
if((*s>'9'||*s<'0')&&*s!='.')
return false;
if (*s>='0'&&*s<='9')
{
flag = true;
while(*s>='0'&&*s<='9')
s++;
if(*s==0)
return true;
}
if(*s=='.')
{
s++;
if (*s==' ')
{
while(*s==' ')
s++;
if(*s==0)
{
if (flag)
return true;//小数点之后可以没有数字,但若是有的话,必须是数字
else
return false;
}
else
return false;
}
if(*s==0)
{
if (flag)
return true;//小数点之后可以没有数字,但若是有的话,必须是数字
else
return false;
}
}
if (*s>='0'&&*s<='9')
{
//if (*s>'9'||*s<'0')
// return false;
flag = true;
while(*s>='0'&&*s<='9')
s++;
if(*s==0)
return true;
}
if (*s=='e'||*s=='E')
{
if (!flag)
return false;
s++;
if(*s=='-'||*s=='+')
s++;
if (*s>'9'||*s<'0')
return false;
while(*s>='0'&&*s<='9')
s++;
if(*s==0)
return true;
}
if (*s==' ')
{
while(*s==' ')
s++;
if(*s==0)
return true;
}
return false;
}