题目

有效数字(按顺序)可以分成以下几个部分:

一个 小数 或者 整数
(可选)一个'e''E' ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

(可选)一个符号字符('+''-'
下述格式之一:
至少一位数字,后面跟着一个点'.'
至少一位数字,后面跟着一个点'.',后面再跟着至少一位数字
一个点'.' ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

(可选)一个符号字符('+''-'
至少一位数字

部分有效数字列举如下:

[“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”]

部分无效数字列举如下:

[“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”]

给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

示例 1:

输入:s = “0”
输出:true

示例 2:

输入:s = “e”
输出:false

示例 3:

输入:s = “.”
输出:false

示例 4:

输入:s = “.1”
输出:true

提示:

1 <= s.length <= 20
s 仅含英文字母(大写和小写),数字(0-9),加号 ‘+’ ,减号 ‘-’ ,或者点 ‘.’ 。

分析

代码实现

public class Solution {char[] chars;boolean point = false;boolean exponent = false;public static void main(String[] args) {Solution s = new Solution();System.out.println(s.isNumber(".1"));}public boolean isNumber(String s) {s = s.trim();int length = s.length();if (length == 0) {return false;}chars = s.toCharArray();String[] ss = s.split("e");if (ss.length == 0) {return false;}if (ss[0].length() == 0)return false;if (ss[0].length() < length)exponent = true;if (ss[0].length() == length - 1) {return false;}String[] pre = ss[0].split("\\.");if (pre.length == 0) {return false;}if (pre[0].length() < ss[0].length())point = true;boolean result = pre(0, pre[0].length());result = result && middle(pre[0].length() + 1, ss[0].length());if (exponent) {result = result && is(ss[0].length() + 1, length);}return result;}public boolean pre(int i, int length) {if (i >= length) {return true;}if (chars[i] == '+' || chars[i] == '-') {i++;}if (i == length && !point) {return false;}for (; i < length; i++) {if (chars[i] < '0' || chars[i] > '9') {return false;}}return true;}public boolean middle(int i, int length) {if (i >= length && point) {if (chars[i - 2] >= '0' && chars[i - 2] <= '9') {return true;}return false;}for (; i < length; i++) {if (chars[i] < '0' || chars[i] > '9') {return false;}}return true;}public boolean is(int i, int length) {if (i == 1) {return false;}if (chars[i] == '+' || chars[i] == '-') {i++;}if (i == length) {return false;}for (; i < length; i++) {if (chars[i] < '0' || chars[i] > '9') {return false;}}return true;}
}

[练习题] 2 . 有效数字相关推荐

  1. c语言基础编程题山东科技大学,C语言练习题〔山东科技大学吐血整理〕.doc

    C语言练习题[山东科技大学吐血整理] 数学11-1 C语言平时训练题 1.算术基本运算 Description 计算两整数x和y(0 Input 输入只有一行. Output 输出为多行,按顺序每行输 ...

  2. 130道Python练习题,涵盖基础内容的方方面面

    1.数据类型篇 1.1 基本数据类型 1.1.1 逻辑推理练习(类型转换) 1.1.1.1 bool函数转换规则 1.1.1.2 int("3.42") 为什么会报错 1.1.1. ...

  3. 计算机一级考试空格符号选择题,2018年9月计算机一级考试MSOffice练习题二

    出国留学网在这里为考生们整理了"2018年9月计算机一级考试MSOffice练习题",希望能帮到大家,想了解更多考试资讯,请关注小编的及时更新哦. 2018年9月计算机一级考试MS ...

  4. 计算机一级摸拟题练习,2017计算机一级MSOffice模拟练习题附答案

    2017计算机一级MSOffice模拟练习题附答案 引导语:2017年9月份的计算机考试快要来临了,你们都准备得怎么样了,以下是百分网小编分享给大家的2017计算机一级MSOffice模拟练习题附答案 ...

  5. matlab数学实验 南邮,matlab实验练习题(计算机)-南邮-matlab-数学实验大作业答案

    matlab实验练习题(计算机)-南邮-matlab-数学实验大作业答案 1"MATLAB"练习题练习题要求:抄题.写出操作命令.运行结果,并根据要求,贴上运行图.1.求的所有根. ...

  6. 螺旋测微器b类不确定度_华理大物实验答案(误差与有效数字,基本测量) -...

    误差与有效数字练习题答案 1.有甲.乙.丙.丁四人,用螺旋测微计测量一个铜球的直径,各人所得的结果表达如下:d甲 =(1.2832±0.0003)cm ,d乙 =(1.283±0.0003)cm ,d ...

  7. matlab数学实验报告syms,MATLAB验练习题(计算机) 南邮 MATLAB 数学实验大作业答案

    "MATLAB"练习题 要求:抄题.写出操作命令.运行结果,并根据要求,贴上运行图. 1.求ex?3x2?0的所有根.(先画图后求解)(要求贴图) >> solve(' ...

  8. 用计算机算锐角三角比,用计算器求锐角三角比,,练习题答案,,青岛版

    篇一:青岛版九上数学2.1锐角三角比练习题 锐角三角比练习题 例1 在Rt?ABC中,?ACB?90?,BC?1,AB?2,则下列结论正确的是() A.sinA?13 B.tanA? C.cosB? ...

  9. 在计算机领域中通常用bips来描述,9月计算机一级MsOffice考试章节练习题

    2017年9月计算机一级考试将于9月23日-26日进行,为帮助考生们复习备考,以下是百分网小编搜索整理的一份9月计算机一级MsOffice考试章节练习题,供参考练习. 1[单选题] 下列设备组中,完全 ...

最新文章

  1. redis源码分析(beta版本)-redis实现的概述逻辑
  2. EclipseLink JPA-RS简介
  3. java进程内存一直没释放_五分钟彻底搞懂你一直没明白的Linux内存管理
  4. hbase hmaster启动起来就自动关闭
  5. 夺命雷公狗---PDO NO:3与连接有关的选项
  6. 第二阶段冲刺第八天,6月7日。
  7. 砸黑板! 正则表达式!!!re 模块
  8. 下周开始读《Principles of Program Analysis》
  9. 计算机的主要元器件介绍,计算机基础电子元器件介绍.ppt
  10. matlab读取txt文件
  11. ftp误删服务器文件恢复,ftp服务器文件误删
  12. 华硕重装后进入bios_华硕笔记本重装系统如何设置bios
  13. this.$refs使用方法
  14. 华为Mate40/华为Mate40Pro忘记密码怎么解锁激活手机设备已锁定恢复出厂无法解锁账户ID屏幕锁解除刷机方法教程
  15. PicGo+Gitee(码云)搭建个人博客的免费图床
  16. cad绘制正八边形_CAD正多边形怎么画,快捷键命令是什么?
  17. 数据库DevOps:我们如何提供安全、稳定、高效的研发全自助数据库服务-iDB/DMS企业版...
  18. linux共享打印机smb,centos7 安装cups+smb共享打印机
  19. 单绞机控制算法模型(Simulink仿真)
  20. 微信公众号笔记---本地调试微信接口

热门文章

  1. Python Dictionary
  2. 计算机组装配件选型,小白DIY攒机指南 谈谈组装电脑前的准备以及购买组装配件需要注意的事项...
  3. 留学计算机Ps模板,留学申请PS模板
  4. 揭秘金山联手微软大奔走
  5. OSChina 周六乱弹 —— 早上儿子问我他是怎么来的
  6. 第三方舆情收集与质量闭环建设
  7. 携转待生效用户是什么_携号转网再出新政,用户运营商矛盾待解
  8. Facebook推首款硬件产品,可视频智能音箱Portal挑战亚马逊
  9. RCNN学习笔记——第三篇: 实现FRCNN网络训练、评价与预测(附全部源码)
  10. haproxy代理服务器介绍