表示数值的字符串

Posted Jeysin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表示数值的字符串相关的知识,希望对你有一定的参考价值。

题目描述

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

 

以上是关于表示数值的字符串的主要内容,如果未能解决你的问题,请参考以下文章

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

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

表示数值的字符串

表示数值的字符串

剑指offer 表示数值的字符串(Java)

剑指offer五十三之表示数值的字符串