Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true


题解:题目不难,就是有点麻烦,要注意的地方很多,总结一下:

  1. 前面和后面的空格要用s.trim()去掉;
  2. 前导的'+'和'-'号需要忽略;
  3. 小数点只能出现一次,且不能出现在e后面;
  4. 指数符号e只能出现一次,而且它的前面和后面都要有数字;
  5. 除了前导的'+'和'-'外,还可以在符号e后面出现'+'和'-',但只能在e后面。

代码如下:

 public class Solution {
public boolean isNumber(String s) {
if(s == null || s.length() == 0)
return false; s = s.trim();
if(s.length() == 0)
return false; int i = 0;
if(s.charAt(0) == '+' || s.charAt(0) == '-')
i++; boolean hasDot = false;
boolean hasExp = false;
boolean num = false; while(i<s.length()){
char now = s.charAt(i);
if(now >= '0' && now <= '9')
{
num = true;
}
else if(now == '.'){
if(hasDot || hasExp)
return false;
hasDot = true;
}
else if(now == 'e'){
if(hasExp || num == false)
return false;
hasExp = true;
num = false;
}
else if(now == '+' || now == '-'){
if(s.charAt(i-1) != 'e')
return false;
}
else
return false;
i++;
}
return num;
}
}

最新文章

  1. Download Free Oracle Reports Building Guide eBook
  2. 010-Scala单例对象、伴生对象实战详解
  3. Zend Studio 中安装emmet插件的方法
  4. Unity3D 系统宏
  5. 关于JavaScipt对象的基本知识
  6. axure复用-自定义组件,母版(模板)
  7. C#串口操作类,包括串口读写操作
  8. 48. Rotate Image
  9. POI 中的CellRangeAddress 参数
  10. Java程序员常用工具集
  11. 256MB小内存MySQL配置优化
  12. swift 之xib自定义view可视化到storyboard
  13. C# 读取系统日志
  14. SpringBoot中使用JNnit4(入门篇)
  15. echarts tree 树型图层级距离设置
  16. Mybatis Annotation使用小结
  17. [动态规划]数字三角形(版本I-III)
  18. 借助微软提供的url重写类库URLRewriter.dll(1.0)实现程序自动二级域名,域名需要泛解析
  19. 虚拟货币ICO是什么意思 看完秒懂
  20. Python 基础常用

热门文章

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理
  2. 在Java中怎样高效的推断数组中是否包括某个元素
  3. firewalld实现网关功能
  4. js项目第一课:获取节点的方法有三个
  5. Java交通灯系统
  6. python的requests初步使用
  7. ifconfig 命令
  8. Tautology - poj 3295
  9. IP地址、子网掩码、网关的关系
  10. python实现身份证识别