【剑指offer】表示数值的字符串

题目链接:表示数值的字符串

 

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

 

题解:这个就是模拟。判断一下字符出现满足的条件。

小数点:在此之前没有出现过小数点,并且不是用科学计数法。

e/E:说明是科学计数法,并且一个字符串中只能有一个e/E

正负号:字符串开头做判断。

 

代码:

 

 1 class Solution {
 2 public:
 3     bool isNumeric(char* string)
 4     {
 5         if(string == NULL)    return false;
 6         if(*string == '+' || *string == '-') string++;
 7         if(*string == '\0')    return false;
 8         bool num = false, e = false, point = false;
 9         while(*string != '\0'){
10             //判断数字
11             if(*string >='0' && *string <='9'){
12                 num = true;
13                 string++;
14             }
15             else if(*string == '.'){    //小数点
16                 if(point || e)    return false;
17                 string++;
18                 point = true;
19             }
20             else if(*string == 'e' || *string == 'E'){    //科学计数法
21                 if(e || !num) return false;
22                 string++;
23                 e = true;
24                 if(*string == '+' || *string == '-')    string ++;
25                 if(*string == '\0')    return false;
26             }
27             else    return false;
28         }
29         return true;
30     }
31 
32 };

 

posted @ 2020-03-05 22:19  甜酒果。  阅读(161)  评论(0编辑  收藏  举报