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;
}
}

【leetcode刷题笔记】Valid Number的更多相关文章

  1. 【leetcode刷题笔记】Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  2. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  3. 18.9.10 LeetCode刷题笔记

    本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...

  4. LeetCode刷题笔记 - 12. 整数转罗马数字

    学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...

  5. Leetcode刷题笔记(双指针)

    1.何为双指针 双指针主要用来遍历数组,两个指针指向不同的元素,从而协同完成任务.我们也可以类比这个概念,推广到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,可以称之为滑动窗口 ...

  6. 【leetcode刷题笔记】Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  7. 【leetcode刷题笔记】Excel Sheet Column Number

    Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...

  8. 【leetcode刷题笔记】Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  9. 【leetcode刷题笔记】Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

随机推荐

  1. Gauge安装

    Gauge系列推荐:https://blog.csdn.net/column/details/20089.html Gauge是一种轻量级的跨平台测试自动化工具,可以以业务语言编写测试用例. 安装 下 ...

  2. 解决java.math.BigDecimal divide方法运算结果为无限小数问题

    http://samueli.iteye.com/blog/224755 BigDecimal除法运算报错,错误如下:Non-terminating decimal expansion; no exa ...

  3. 使用程序修改系统(IE)代理设置

    文章都是发布在github再转到这边的,这边格式可能会乱掉.博客地址:benqy.com 这是本人在做的一个前端开发调试工具(HttpMock),功能是web服务器+http日记+http代理(类似f ...

  4. 炒美股史考特(Scottrade)开户准备及如何获取免费交易(最新2017版)

    最新美股史考特(Scottrade)开户及汇款攻略 (2017 年 6 月) 一   前言 二   开户流程 三    激活账户 四 转账汇款 五 小结 一 前言:为什么选择史考特(Scottrade ...

  5. 【POJ 2400】 Supervisor, Supervisee(KM求最小权匹配)

    [POJ 2400] Supervisor, Supervisee(KM求最小权匹配) Supervisor, Supervisee Time Limit: 1000MS   Memory Limit ...

  6. Android中多线程编程(三)Handler更新UI的方式

    Handler更新UI的方式和原因以及遇到的问题 1.方式: 仅仅能通过Handler来更新UI. 代码例如以下: package com.chengdong.su.handlerdemo; impo ...

  7. 利用python 掌握机器学习的过程

    转载:http://python.jobbole.com/84326/ 偶然看到的这篇文章,觉得对我挺有引导作用的.特此跟大家分享一下. 为了理解和应用机器学习技术,你需要学习 Python 或者 R ...

  8. Monkey源代码分析之事件源

    上一篇文章<Monkey源代码分析之执行流程>给出了monkey执行的整个流程.让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图 ...

  9. centos7设置ip

    centos7不能再通过setup命令来设置ip了,但可以通过修改网卡配置文件来设置ip 在/etc/sysconfig/network-scripts目录下找到网卡配置文件,修改之前内容如下 TYP ...

  10. android 学习mvc 和 mvp 和 mvvm参考项目

    githup地址:https://github.com/ivacf/archi 阿尔奇 此存储库展示并比较可用于构建Android应用程序的不同架构模式.完全相同的示例应用程序使用以下方法构建三次: ...