博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer之字符串是否为数值
阅读量:6499 次
发布时间:2019-06-24

本文共 1121 字,大约阅读时间需要 3 分钟。

1. 题目

这是《剑指offer》上的一道题,刚开始觉得这是一道挺简单的题目,后来发现自己太年轻了,考虑的因素太少了,思考了而是分钟还是无从下手,看了作者的思路深深被他折服了,题目如下:

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 "+100"、"5e2"、"-123"、"3.1415" 以及 "-1E-16" 都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5" 以及 "12e+5.4" 都不是

2. 思路

表示数值的字符串遵循模式 A[.[B]][e|EC] 或者 .B[e|EC],其中 A 为数值的整数部分,B 紧跟着小数点为数值的小数部分,C 紧跟着 'e' 或者 'E' 为数值的指数部分。在消暑利可能没有数值的整数部分。例如,小数 .123 等于 0.123。因此 A 部分不是必需的。如果一个数没有整数部分,那么它的小数部分不能为空。

上述 A 和 C 都是可能以 '+' 或者 '-' 开头的 0~9 的数位串;B 也是 0~9 的数位串,但前面不能有正负号。

以表示数值的字符串 "123.45e+6" 为例,"123" 是它的整数部分 A,"45" 是它的小数部分 B,"+6" 是它的指数部分 C。

判断一个字符串是否符合上述模式,首先应该扫描 0~9 的数位,也就是上面数值中表示整数的 A 部分。如果遇到小数点,则开始扫描数值小数部分 B。如果遇到 'e' 或者 'E',则开始扫描表示数值指数的 C 部分。根据这样的思路,给出参考代码:

public class Main{    public boolean isNumeric(char[] str){        if(str==null)           return false;        // 这个数组就一个元素,存储遍历字符串的下标        int[] index = {0};        // 先遍历字符串的整数部分        boolean numeric = scanInteger(str,index);        // 碰到小数点时,开始遍历 B 部分        if(index[0]
='0' && str[index[0]]<='9') index[0]++; return index[0]>before; }}

更多《剑指offer》的题目以及源代码可以参考我的 。

转载于:https://www.cnblogs.com/firepation/p/9592335.html

你可能感兴趣的文章
linux 英语大全对照表,Linux下推荐的常用应用程序列表(国外英语).doc
查看>>
2018秋c语言程序设计考试答案,2018秋C语言程序设计上(赵三元)-中国大学mooc-题库零氪...
查看>>
c语言从文件读取矩阵做乘积,三阶矩阵的乘法(C语言从文件中读入)
查看>>
爱因斯坦阶梯问题用while循环c语言,【C语言编程练习】5.9 爱因斯坦的阶梯问题...
查看>>
c语言软件横8,经典C语言程序设计100例(8)
查看>>
c语言结构体初始化及赋值,结构体的定义、初始化和赋值
查看>>
C语言十六进制0-9转化位十进制,C语言编程 十六进制转化成十进制
查看>>
slip协议的实现 c语言,浅析PPP和SLIP协议
查看>>
大一c语言学霸笔记图片,点开这篇推文,你离学霸只差一个笔记的距离
查看>>
Android file 封装,Android Studio封装.so文件教程
查看>>
android 页面无法点击,为什么点击不跳转到下一界面,哪位大神帮瞅瞅
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
android phone win10下载,Win10 Your Phone新功能:PC端运行Android应用
查看>>
js android x5,腾讯x5开源库进行Js交互
查看>>
android开发中为视频添加暂停播放器,Android - 视频启动时暂停音乐播放器
查看>>
html绝对定位重叠,HTML_firefox下绝对定位元素重叠造成不可点击问题,重构地图网站过程中碰到的,f - phpStudy...
查看>>
ps切图教程 android,PS前端切图完整教程
查看>>
html显示服务器状态,显示服务器时间并一直显示(html代码)
查看>>
在线html代码优化,网站seo优化html代码方法
查看>>
html中嵌入flv视频直播,html中嵌入flv格式文件的代码
查看>>