先判断有没有字符e或者E存在,如果有,则把字符分为两个字符串,分别判断这两个字符串是否能形成一个数字(注意e或E后不能有小数点,这个可以提前判断排除)。如果没有,那就直接判断这个字符串是否能形成一个数字。
1 class Solution { 2 public: 3 bool judge(char* str) 4 { 5 bool dot=false; 6 bool firn=false; 7 int len=strlen(str); 8 for(int i=0;i<len;i++) 9 { 10 if(str[i]==‘+‘||str[i]==‘-‘) 11 { 12 if(i!=0) 13 return false; 14 } 15 else if(str[i]==‘.‘) 16 { 17 if(dot==true) 18 return false; 19 dot=true; 20 } 21 else if(str[i]<‘0‘||str[i]>‘9‘) 22 return false; 23 else if(str[i]>=‘0‘&&str[i]<=‘9‘) 24 { 25 firn=true; 26 } 27 } 28 return firn; 29 } 30 bool isNumeric(char* string) 31 { 32 int len=strlen(string); 33 int index=-1; 34 for(int i=0;i<len;i++) 35 { 36 if(string[i]==‘e‘||string[i]==‘E‘) 37 { 38 if(index==-1) 39 index=i; 40 else 41 return false; 42 } 43 if(index!=-1&&string[i]==‘.‘) 44 return false; 45 } 46 if(index==0||index==len-1) 47 return false; 48 if(index==-1) 49 { 50 return judge(string); 51 } 52 else 53 { 54 char* str1=new char[index+1]; 55 str1[index]=‘\0‘; 56 memcpy(str1,string,index); 57 char* str2=new char[len-index]; 58 str2[len-index-1]=‘\0‘; 59 memcpy(str2,string+index+1,len-index-1); 60 return (judge(str1)&&judge(str2)); 61 } 62 } 63 };
时间: 2024-10-09 01:50:55