首页 > 其他 > 详细

表示数值的字符串

时间:2017-12-22 21:38:07      阅读:230      评论:0      收藏:0      [点我收藏+]

题目描述

  请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
  思路:小数点或者前面有一个整型,或者后面有一个无符号整型,或者两者都有;e或E前面必须有一个整型或小数,后面必须有一个整型。
class Solution {
public:
    bool scanUInt(char *string, int &idx)//匹配无符号整型
    {
        int tmp=idx;
        while(string[idx]>=0 && string[idx]<=9)++idx;
        return idx>tmp;
    }
    bool scanInt(char *string, int &idx)//匹配带符号(+或-)的整型
    {
        if(string[idx]==+ || string[idx]==-)++idx;
        return scanUInt(string, idx);
    }
    bool isNumeric(char* string)
    {
        if(string==NULL)return false;
        int idx=0;
        bool res=scanInt(string, idx);
        if(string[idx]==.)
        {
            ++idx;
            res=scanUInt(string, idx) || res;//小心短路运算
        }
        if(string[idx]==e || string[idx]==E)
        {
            ++idx;
            res=scanInt(string, idx) && res;
        }
        return res && string[idx]==\0;
    }
};

 

表示数值的字符串

原文:http://www.cnblogs.com/jeysin/p/8087609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!