剑指offer 表示数值的字符串

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

代码:

复制代码
class Solution {
public:
    bool isNumeric(char* string)
    {
        static bool symbol=1,sign=1,dot=1;;
        if(*string=='\0' && *(string-1)!='\0'){
            symbol=sign=dot=1;return true;}
        else if(*string>='0'&&*string<='9')
            return isNumeric(string+1);
        //判断正负号存在
        else if((*string=='+' || *string=='-') && ((*(string+1)>='0'&&*(string+1)<='9')||*(string+1)=='.') && !(*(string-1)>='0'&&*(string-1)<='9') && symbol){
            symbol=0;return isNumeric(string+1);}
        //判断小数点的存在
        else if(*string=='.' && (*(string+1)>='0'&&*(string+1)<='9') && ((*(string-1)>='0'&&*(string-1)<='9')||(*(string-1)=='+' || *(string-1)=='-')) && dot ){
            dot=0;return isNumeric(string+1);}
        //e存在时
        else if((*string=='e'||*string=='E') && (*(string-1)>='0'&&*(string-1)<='9') && *(string+1)!='\0' && sign){
            symbol=1;sign=0;return isNumeric(string+1);}
        else
            return false;
    }
};
复制代码

我的笔记:需注意每个if与else的匹配规则,若想并行判断,则需要使用else if 这样可避免一个字符进行多次if判断。

posted @   John_yan15  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示