この例は嫌です
スペースのみ-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;
}
};