表示数值的字符串

先判断有没有字符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 };
View Code

 

posted @ 2016-03-26 23:07  vaevaevae  阅读(258)  评论(0编辑  收藏  举报