Valid Number 判断一个数字是否有效
2014-01-19 21:14
274 查看
class Solution {
public:
bool isNumber(const char *s) {
if(s==NULL)
return false;
while(isspace(*s))
s++;
if(*s=='+'||*s=='-')
s++;
bool eAppear=false;
bool dotAppear=false;
bool firstPart=false;
bool secondPart=false;
bool spaceAppear=false;
while(*s!='\0')
{
if(*s=='.')
{
if(dotAppear||eAppear||spaceAppear)
return false;
else
dotAppear=true;
}
else if(*s=='e'||*s=='E')
{
if(eAppear||!firstPart||spaceAppear)
return false;
else eAppear=true;
}
else if(isdigit(*s))
{
if(spaceAppear)
return false;
if(!eAppear)
firstPart=true;
else
secondPart=true;
}
else if(*s=='+'||*s=='-')
{
if(spaceAppear)
return false;
if(!(*(s-1)=='e'||*(s-1)=='E'))
return false;
}
else if(isspace(*s))
spaceAppear=true;
else return false;
s++;
}
if(!firstPart)
return false;
else if(eAppear&&!secondPart)
return false;
else return true;
}
};
public:
bool isNumber(const char *s) {
if(s==NULL)
return false;
while(isspace(*s))
s++;
if(*s=='+'||*s=='-')
s++;
bool eAppear=false;
bool dotAppear=false;
bool firstPart=false;
bool secondPart=false;
bool spaceAppear=false;
while(*s!='\0')
{
if(*s=='.')
{
if(dotAppear||eAppear||spaceAppear)
return false;
else
dotAppear=true;
}
else if(*s=='e'||*s=='E')
{
if(eAppear||!firstPart||spaceAppear)
return false;
else eAppear=true;
}
else if(isdigit(*s))
{
if(spaceAppear)
return false;
if(!eAppear)
firstPart=true;
else
secondPart=true;
}
else if(*s=='+'||*s=='-')
{
if(spaceAppear)
return false;
if(!(*(s-1)=='e'||*(s-1)=='E'))
return false;
}
else if(isspace(*s))
spaceAppear=true;
else return false;
s++;
}
if(!firstPart)
return false;
else if(eAppear&&!secondPart)
return false;
else return true;
}
};
相关文章推荐
- codeforces55D(数位DP)
- 在 windows7 中无法显示 chm 文件内容的问题【解决办法】
- Java网络编程 入门学习笔记(一)
- 苹果开发者中心 Certificates,Identifiers & Profiles 备忘录
- CSS3+HTML5特效1 - 上下滑动效果
- 以血的教训来谈程序的健壮性&&练习3-3
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- python总结链接
- yii基础知识-应用
- 字符串屏蔽算法
- [字符串]FJSDFZOJ 1075 统计单词数
- LeetCode OJ:Max Points on a Line
- Python中的内置的模块 和第三方的模块
- Erlang基础 - 项式比较
- html方面笔记
- python中的generator高级用法 -- send
- PHP新手上路
- Python中第三方的库(library)、模块(module),包(package)的安装方法
- [leetcode]Binary Tree Inorder Traversal
- 读写(自旋)锁