码迷,mamicode.com
首页 > 其他好文 > 详细

53表示数值的字符串 记忆

时间:2018-01-14 16:44:32      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:字符   地方   ring   desc   重点   scribe   实现   gpo   char   

题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
 
思路:这题目非常繁琐;要考虑很多种情况,记下来。
定义三个变量,dot,nume,num分别计算小数点的数目,e/E的数目,数字的数目,如果小数点出现在nume不为0之后,e出现在num为0之前,以及重点考虑e出现的时候,e之后会出现+-和数字,要考虑接下来的不能是字符串的结束。最后还要计算小数点和e的个数不能大于1,大于1就返回错误。
容易错的地方是判断e之后要判断+-,这个时候要++idx,然后判断接下来是不是10e+,所以判断是否是结尾符号,再次++idx。
 
class Solution {
public:
    bool isNumeric(char* string){
        if(string == nullptr){
            return false;
        }
        int idx = 0;
        if(string[0] == + || string[0] == -){
            ++idx;
        }
        int dot = 0,nume = 0,num = 0;
        for(idx;idx < strlen(string);++idx){
            if(string[idx] == .){
                if(nume >= 1){
                    return false;
                }
                ++dot;
            }  
            else if(string[idx] >= 0 && string[idx] <= 9){
                num = 1;
            }
            else if(string[idx] == e || string[idx] == E){
                if(num == 0){
                    return false;
                }
                ++nume;
                if(string[idx + 1] == + || string[idx + 1] == -){
                    ++idx;
                }
                if(string[++idx] == \0){
                   return false;
                }
            } 
            else{
                return false;
            }
        }
        if(dot > 1 || nume > 1){
            return false;
        }
        return true;
    }

};

 

 

53表示数值的字符串 记忆

标签:字符   地方   ring   desc   重点   scribe   实现   gpo   char   

原文地址:https://www.cnblogs.com/dingxiaoqiang/p/8283506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!