Valid Number
来源:互联网 发布:淘宝店面装修图片素材 编辑:程序博客网 时间:2024/05/23 22:34
class Solution {public: //return the offset of . from start, if not float, return -1; int isFloat(int start,int end,const char* s) { //float at least contains a . and a number if(start>=end) { return -1; } if((s[start]=='+')||(s[start]=='-')) { start++; } if(start>=end) { return -1; } int dotPos=-1; for(int i=start;i<=end;++i) { if(s[i]=='.') { if(dotPos==-1) { dotPos=i; } else { return -1; } } else if((s[i]<'0')||(s[i]>'9')) { return -1; } else { continue; } } //calc offset if(dotPos!=-1) { dotPos=dotPos-start; } return dotPos; } bool isInteger(int start,int end,const char* s) { if(start>end) { return false; } if(s[start]=='+'||s[start]=='-') { start++; } if(start>end) { return false; } for(int i=start;i<=end;++i) { if((s[i]<'0')||(s[i]>'9')) { return false; } } return true; } bool isNumber(const char *s) { int len=strlen(s); //left trim int start=0; for(;start<len;++start) { if(s[start]==' ') { continue; } else { break; } } //right trim int end=len-1; for(;end>=0;--end) { if(s[end]==' ') { continue; } else { break; } } if(start>end) { return false; } //find the pos of e(E) if it is exist,before e is a integer or float,after e is a integer int ePos=-1; for(int i=start;i<=end;++i) { if((s[i]=='e')||(s[i]=='E')) { ePos=i; break; } } if(ePos==-1) { if(isInteger(start,end,s)) { return true; } if(isFloat(start,end,s)!=-1) { return true; } return false; } else { if(isInteger(ePos+1,end,s)) { if(isInteger(start,ePos-1,s)) { return true; } int pos=isFloat(start,ePos-1,s); if(pos!=-1) { return true; } } return false; } }};
题目本身不难,只要细心处理好逻辑判断就好。首先要把最前面和最后面的空白去掉,然后判断是否是用科学计数法表示的,如果不是,直接判断是否为整数或者浮点数;如果是用科学计数法表示的,则e后边必须为整数,e前边为整数或浮点数。
0 0
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- linux中eth0找不到的问题
- jqGrid 各种参数 详解
- vs2008 下如何开发.ocx控件的方法
- Asp.net将DataTable分多个Sheet导出到Excel
- solr 添加 log4j
- Valid Number
- Android Fragment 真正的完全解析(上)
- 【This VI】LabVIEW读取文本文件函数
- Android Context 上下文
- iOS 8中的通知中心快速回复
- aspnet网页防止后退或刷新造成重复提交
- 避免oom异常
- VS2012出现 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage“问题的解决方法
- 设置开发(Debug模式)与提交(Release模式)的运行环境以及如何屏蔽NSLog