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

Posted trouble-easy

tags:

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

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

思路:排除法

    bool isNumeric(char* string)
    {
        //排除false的情况,如
        //不能有符号+-,e,E,小数点,数字之外的符号
        //e或E后必须跟着数字,e或E0或1个
        //小数点只有0或1个,e或E后不能有小数点
        //+-要么在数字开始0或1个,要么在E或e后第一位0或1个,
        bool decimal=false,hasE=false,sign=false;
        for(int i=0;i<strlen(string);i++)
        {
            if(string[i]==‘+‘||string[i]==‘-‘)
            {

                if(i==0||string[i-1]==‘E‘||string[i-1]==‘e‘);
                    else return false;
              
            }
            else if(string[i]==‘E‘||string[i]==‘e‘)
            {
                if(i==strlen(string)-1)return false;
                if(hasE) return false;
                hasE=true;
            }
            else if(string[i]==‘.‘)
            {
                if(decimal)return false;
                if(hasE) return false;
                decimal=true;
                
            }
            else{
                if(string[i]>‘9‘||string[i]<‘0‘)
                return false;
            }
        }
        return true;
    }

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

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

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

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

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

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

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