表示数值的字符串 — 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为紧跟着eE的指数部分

因此,对于一个字符串是否表示数值的判断,我们可以按照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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:调整数组顺序使奇数位于偶数前 — C++实现
下一篇:正则表达式匹配 — C++实现

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月03日 22时16分13秒