leetcode[65]Valid Number
Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
Update (2014-12-06):
New test cases had been added. Thanks unfounder's contribution.
class Solution { public: bool isNumber(const char *s) { if(s==NULL)return false; while(*s==' ')s++; if(*s=='+'||*s=='-') s++; bool dotAppear=false; bool spaceAppear=false; bool eAppear=false; bool firstAppear=false; bool secondAppear=false; while(*s!='\0') { if (*s==' ') { spaceAppear=true; } else if(spaceAppear) { return false; } else if (*s=='.') { if (dotAppear||eAppear||spaceAppear) { return false; } else { dotAppear=true; } } else if (*s=='e'||*s=='E') { if (eAppear||!firstAppear||spaceAppear) { return false; } else { eAppear=true; } } else if(*s=='+'||*s=='-') { if (!(*(s-1)=='e'||*(s-1)=='E')||spaceAppear) { return false; } } else if (*s>='0'&&*s<='9') { if (spaceAppear) { return false; } else if (!eAppear) { firstAppear=true; } else { secondAppear=true; } } else { return false; } s++; } if (!firstAppear) { return false; } else if (eAppear&&!secondAppear) { return false; } else { return true; } } };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步