一个字符串是否表示的是整数

  1. 题目描述
  2. 思路分析

题目描述

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

思路分析

  • 指针操作
  • 数字表示解析
    • 一般数字
    • 科学表达式
class Solution {
public:
    bool isNumeric(char* string)
    {
        if (string == nullptr) {
            return false;
        }
        
        bool numberic = scanInteger(&string);//整数部分
        
        if (*string == '.') {// 小数部分
            ++string;
            
            numberic = scanUnsignedInteger(&string) || numberic;
        }
        
        if (*string == 'e' || *string == 'E') {// 指数部分
            ++string;
            
            numberic = numberic && scanInteger(&string);
        }
        
        return numberic && *string == '\0';
    }
private:
    /**
        子函数,扫描整数
    */
    bool scanInteger(char** str){
        // 符号处理
        if (**str == '+' || **str == '-'){
            ++(*str);
        }
        // 处理无符号整数
        return scanUnsignedInteger(str);
    }
    /**
        子函数,扫描无符号整数
    */
    bool scanUnsignedInteger(char** str){
        const char* before = *str;
        // 满足无符号整数要求
        while(**str != '\0' && **str >= '0' && **str <= '9'){
            ++(*str);// 指针后移
        }
        
        return *str > before;// 是否存在数字
    }

};

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:一个字符串是否表示的是整数

Count:265

Author:攀登

Created At:2019-12-25, 23:54:30

Updated At:2024-06-15, 15:53:35

Url:http://jiafeimao-gjf.github.io/2019/12/25/sword-is-string-can-understand-to-number/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation