剑指offer-表示数值的字符串
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
注意:E或e后面不能为空,并且不能有小数点
class Solution { public: bool isNumeric(char* string) { if(string==NULL){ return false; } if(*string=='+' || *string=='-'){ string++; } if(*string=='\0'){ return false; } int point=0,num=0,Ee=0;//记录. 数组 e是否出现过 while(*string!='\0'){ if(*string>='0' && *string<='9'){ string++; num++; } else if(*string=='.'){ if(Ee>0 || point>0){ return false; } string++; point++; } else if(*string=='E' || *string=='e'){ if(num==0 || Ee>0){ return false; } string++; Ee++; if(*string=='\0'){ return false; } else if(*string=='+' || *string=='-'){ string++; } } else{ //出现abc等字符 return false; } } return true; } };