[剑指Offer] 53.表示数值的字符串

题目描述

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

【思路】本题要注意考虑各种情况,下面代码有详解

 1 class Solution {
 2 public:
 3     bool isNumeric(char* string)
 4     {
 5         //标记数字、正负号、小数点、E或e是否出现
 6         bool num = false,sign = false,point = false,hasE = false;
 7         for(int i = 0;i < strlen(string);i ++){
 8             if(string[i] == '+' || string[i] == '-'){
 9                 //如果正负号前有数字或多余的正负号,返回false
10                 if(sign == true || num == true) return false;
11                 else sign = true;
12             }else if(string[i] == '.'){
13                 //如果小数点出现在e之后或有多余小数点,返回false
14                 if(point == true || hasE == true) return false;
15                 else point = true;
16             }else if(string[i] == 'e' || string[i] == 'E'){
17                 //如果e出现在末尾或有多余的e,返回false
18                 if(hasE == true || i == strlen(string) - 1) return false;
19                 else{
20                     num = false;
21                     sign = false;
22                     hasE = true;
23                 }
24                 //如果出现非数字,返回false
25             }else if(string[i] < '0' || string[i] > '9'){
26                 return false;
27             }else{//如果出现的是数字,将num赋为true
28                 num = true;
29             }
30         }
31         //若能扫描到字符串末尾,返回true
32         return true;
33     }
34 
35 };

 

posted @ 2017-03-16 14:20  Strawberry丶  阅读(152)  评论(0编辑  收藏  举报