class Solution {
public:
bool isNumeric(string str) {
// write code here
//数字 continue。
//加减要在 1、要在开头或者E的后面 2、且后面不能是E
//E 1、只能出现一次 2、且不能在开头和最后
//小数点 3、在e前只能出现1次,e后不行 2、小数点后要有数字
bool hasE=false;
int dot=0;
for(int i=0;i<str.size();i++)
{
cout<<str[i]<<endl;
if(str[i]>='0'&&str[i]<='9')
continue;
if(str[i]=='+'||str[i]=='-') // 判断 +- 不能出现的位置
{
if(i!=0&&str[i-1]!='e'&&str[i-1]!='E') // 当出现+- 如果不是开头 或者 前面没有指数e
return false;
if(i==str.size()-1||str[i+1]=='E'||str[i+1]=='e') // 最后为+-,或者E的前面为+-
return false;
}
else if(str[i]=='E'||str[i]=='e')
{
if(hasE||i==0||i==str.size()-1) // 已经出现过e 或者 最前面 出现 或者最后面出现都不对
return false;
hasE=true;
}
else if(str[i]=='.') //
{
if(hasE) // e 后面不能有小数
return false;
if(dot>0) // 小数不能出现两次
return false;
if(i==str.size()-1) // 小数点不能再最后一位
return false;
dot++;
}
else return false;
}
return true;
}
};