表示数值的字符串 — C++实现
发布日期:2021-10-02 06:27:38
浏览次数:2
分类:技术文章
本文共 909 字,大约阅读时间需要 3 分钟。
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
解题思路
其实是科学计数法的判读,任何一个数都可以写成A[.[B]][e|EC]
的形式:
A
为数值的整数部分,可无(0.xxx
)B
为紧跟着小数点的小数部分C
为紧跟着e
或E
的指数部分
因此,对于一个字符串是否表示数值的判断,我们可以按照A,B,C
的顺序判断
代码实现
class Solution { public: bool isNumeric(char* string){ bool tmp=isint(&string); if(*string=='.'){ string++; tmp=isint(&string)||tmp; } if(*string=='e'||*string=='E'){ string++; tmp=isint(&string)&&tmp; } return tmp&& *string=='\0'; } bool isint(char **str){ if(**str=='+'||**str=='-') (*str)++; return isnum(str); } bool isnum(char **str){ char *cur=*str; while(**str!='\0'&&**str>='0'&&**str<='9'){ (*str)++; } return *str>cur; }};
运行时间:3ms占用内存:484k
转载地址:https://blog.csdn.net/Jeaten/article/details/108306536 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月03日 22时16分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
离群点检测和新奇检测之新奇检测
2019-04-26
几种常见的离群点检验方法
2019-04-26
学习前后端技术的建议
2019-04-26
javascript的介绍,变量let和var声明,变量作用域,解构赋值
2019-04-26
统一资源定位符URL
2019-04-26
HTTP keep-alive详解
2019-04-26
字符编码(python编码机制的过去和现在)
2019-04-26
python序列的高阶函数:map,reduce,filter,sorted
2019-04-26
python模块的定义,和模块的作用域
2019-04-26
面向对象,即class类,类的封装,属性的类别划分,
2019-04-26
面向对象的继承和多态,剖析对象的信息(获取相关信息),类属性和实例属性
2019-04-26
JS的语句标识,注释,区分大小写
2019-04-26
JS的变量,使用strict模式
2019-04-26
对象,对象属性和方法
2019-04-26
Ubuntu的安装,搜狗输入法的安装
2019-04-26
itertools处理迭代
2019-04-26
iterable对象 yeield
2019-04-26
一些实用的快捷键
2019-04-26