标签:
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路:若开始有+-号,string++;+.123是正确的;.只能出现一次;e,E之后可以紧跟+-号,但之后不能出现.;e,E后必须有数字。
1 class Solution { 2 public: 3 bool isNumeric(char* string) 4 { 5 if(string==NULL) return false; 6 int flagpoint=0; 7 int flagE=0; 8 int flagnum=0; 9 int flagsign=0; 10 if(*string==‘+‘||*string==‘-‘) 11 string++; 12 while(*string!=‘\0‘){ 13 if(*string>=‘0‘&&*string<=‘9‘){ 14 flagnum=1; 15 string++; 16 if(flagE!=0) 17 flagE++; 18 continue; 19 } 20 if(flagpoint==0&&*string==‘.‘){ 21 string++; 22 flagpoint++; 23 continue; 24 } 25 if(flagnum==1&&flagE==0){ 26 if(*string==‘e‘||*string==‘E‘){ 27 if(*(string+1)==‘-‘||*(string+1)==‘+‘){ 28 string++; 29 } 30 string++; 31 flagE++; 32 flagpoint++; 33 continue; 34 } 35 } 36 return false; 37 } 38 if(flagE==1) return false; 39 return true; 40 } 41 42 };
标签:
原文地址:http://www.cnblogs.com/zl1991/p/4799720.html