码迷,mamicode.com
首页 > 其他好文 > 详细

表示数值的字符串

时间:2017-12-22 21:50:05      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:一个   return   有一个   ==   body   style   pre   必须   turn   

题目描述

  请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+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;
    }
};

 

表示数值的字符串

标签:一个   return   有一个   ==   body   style   pre   必须   turn   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!