class Solution {
public:
bool isNumber(const char *s)
{
int i,start=1,a[2]={0,0},loc[2]={0,0},k1=0,k2=0;
vector<int>n;
if(s=="")
return false;
for(i=0;i<strlen(s);i++)
{
if(s[i]!=' ')
{
start=i+1;
break;
}
}</int>
if(s[start-1]=='+'||s[start-1]=='-')
{
start++;
n.push_back(0);
}
for(i=start-1;i<strlen(s);i++)
{
if(s[i]<'0'||s[i]>'9')
{
if(s[i]=='.')
{
if(i!=strlen(s)-1&&(s[i+1]>'9'||s[i+1]<'0')&&s[i+1]!=' ')
if(s[i+1]!='e'&&s[i+1]!='E')
return false;
else if(k2==0)
return false;
a[0]++;
loc[0]=i+1;
n.push_back(0);
}
else if(s[i]=='e'||s[i]=='E')
{
if(i==strlen(s)-1)
return false;
else
if(s[i+1]>'9'||s[i+1]<'0')
if(s[i+1]!='+'&&s[i+1]!='-')
return false;
else
if(i+1==strlen(s))
return false;
else
if(s[i+2]>'9'||s[i+2]<'0')
return false;
a[1]++;
loc[1]=i+1;
n.push_back(0);
}
else if(s[i]=='+'||s[i]=='-')
if(s[i-1]!='e'&&s[i-1]!='E')
return false;
else ;
else
if(s[i]==' ')
n.push_back(1);
else return false;
}
else
{
n.push_back(0);
k2=1;
}
}
if(k2==0)
return false;
if(a[0]>1||a[1]>1)
return false;
if(loc[0]>loc[1]&&loc[1]!=0)
return false;
if(start==loc[1])
return false;
for(i=0;i<n.size();i++)
{
if(n[i]==0)
if(k1==0||k1==1)
k1=1;
else
return false;
else
if(k1==1)
k1=2;
}
if(k1==0)
return false;
return true;
}};



京公网安备 11010502036488号