剑指offer---表示数值的字符串

本文介绍了一个用于判断字符串是否能被解析为有效数值的方法。通过C++实现的类Solution中包含核心函数isNumeric,该函数能够正确处理整数、小数、科学计数法等不同形式的数值表达。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Solution {  
public:  
    bool isNumeric(char* string)  
    {  
        if(string == NULL)  
            return false;  
        if(*string == '+' || *string == '-')  
            string++;  
        if(*string == '\0')  
            return false;  
        scanDigit(&string);  
        bool flag = true;  
        if(*string != '\0')  
        {  
            if(*string == '.')  
            {      
                string++;  
                scanDigit(&string);  
                if(*string == 'e' || *string == 'E')  
                    flag = isE(&string);  
            }  
            else  if(*string == 'e' || *string == 'E')      //整数  
                    flag = isE(&string);  
            else   
                flag = false;  
                  
        }  
         return flag && (*string == '\0');             //此处考虑1.2.3这个例子就知道为什么要加后一项  
          
    }  
    void scanDigit(char **string)  
    {  
        while(**string != '\0' && **string >='0' && **string <='9')  
            ++(*string);  
    }  
    bool isE(char **string)  
    {  
        ++(*string);  
        if(**string == '+' || **string == '-')  
            ++(*string);  
        if(**string == '\0')  
            return false;  
        scanDigit(string);  
        return (**string == '\0') ? true : false;  
          
    }  
};  

 

转载于:https://www.cnblogs.com/159269lzm/p/7285684.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值