这个示例太恶心了
只有空格——false
只有小数点——false(用bool num判断是否出现了数字)
最后面可以是空格
小数点可以在第1位,小数点可以在最后。。。
这道题提交了十几遍,,,,因为这些辣鸡的边界条件
class Solution {
public:
bool isNumber(string s) {
if(s.empty()) return false;
int e=-1;
while(s[0]==' '){
s.erase(0,1);
}
while(1){
int j=s.size()-1;
if(j>=0&&s[j]==' '){
s.erase(j,1);
}
else break;
}
if(s.empty()) return false;
bool point=false;
bool num=false;
int n=s.size();
for(int i=0;i<n;i++){
if(s[i]=='+'||s[i]=='-'){
if(i!=e+1) return false;
}
else if(s[i]=='.'){
if(point || e!=-1 ) return false;
point=true;
}
else if(s[i]=='e'){
if(!num || e!=-1) return false;
num=false;
e=i;
}
else if(s[i]<'0' || s[i]>'9') return false;
else num=true;
}
return num;
}
};