Validate if a given string is numeric.
Some examples:
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
class Solution {
public:
bool isNum(const char *&s, bool flag)
{
bool result = false;
bool neg = false;
if (*s != '\0' )
{
if (*s == '-')
{
neg = true;
++s;
}
else if (*s == '+')
++s;
}
bool dot = false;
while(*s != '\0')
{
if (*s >= '0' && *s <= '9')
{
result = true;
++s;
}
else if (*s == '.')
{
// e之后的数字不能为小数
if (flag)
return false;
if (dot == false)
{
dot = true;
++s;
}
else
return false;
}
else if (*s == 'e' || *s == ' ')
{
return result;
}
else
return false;
}
return result;
}
bool isNumber(const char *s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (s == NULL) return false;
bool neg = false;
bool result = false;
// 前置空白
while(*s != '\0' && *s == ' ')
++s;
// e之前的数字
result = isNum(s, false);
if (result == false)
return false;
// e之后
if (*s == 'e')
{
++s;
result = isNum(s, true);
if (result == false)
return false;
}
// 后置空白
while(*s != '\0' && *s == ' ')
++s;
if (*s == '\0')
return true;
else
return false;
}
};