一看题目就感觉好复杂!试着写了一下,因为题目描述不清晰所以中途按照错误示例反复修改了很多次:
class Solution {
public:
bool isNumber(string s) {
if(s.size()==0) return 0;
if(s[0]=='+'||s[0]=='-'){
string ss=s.substr(1);
if(s[1]!='+'&&s[1]!='-') return isNumber(ss);
else return 0;
}
bool point=0;
for(int i=0;i<s.size();i++){
if(s[i]>47&&s[i]<58) continue;
else if(s[i]=='.'){
if(i==0&&(s[i+1]=='e'||s[i+1]=='E')) return 0;
else if(point==0&&(i!=0||i!=s.size()-1)) point=1;
else return 0;
}
else if(s[i]=='e'||s[i]=='E'){
if(i==0) return 0;
else return isZS(s.substr(i+1));
}
else return 0;
}
return 1;
}
bool isZS(string s) {
if(s.size()==0) return 0;
if(s[0]=='+'||s[0]=='-'){
string ss=s.substr(1);
if(s[1]!='+'||s[1]!='-') return isZS(ss);
else return 0;
}
for(int i=0;i<s.size();i++){
if(s[i]<48||s[i]>57) return 0;
}
return 1;
}
};
(其实总体还是不算难的)看了答案知道考察的原来是有限状态机。