剑指offer20题——leetcode主站65题

题目链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/

思路:

1. 首先去除字符串首尾字符

2. 根据小写e划分指数和底数

3. 分别对指数和底数判断是否合法即可

class Solution {
public:
    bool judgeDigit(string s)
    {
        int len=s.size();
        bool flag_has_digit=false;
        bool point_flag=false;
        for(int i=0;i'9')
            {
                return false;   //出现除0-9,+,-,.,之外的字符返回false
            }
            else 
            {
                flag_has_digit=true;    //记录是否出现了数字,最终判断标志
            }
        }
        if(flag_has_digit)
        return true;
        else return false;
    }
    
    bool judgeExponent(string s)    //与判断底数相比的唯一差别:.的出现也是不合法的
    {
         int len=s.size();
         if(len==0)return false;
        bool flag_has_digit=false;
        bool point_flag=false;
        for(int i=0;i'9')
                return false;
            else 
            {
                flag_has_digit=true;
            }
        }
      if(flag_has_digit)
        return true;
        else return false;
    }
    bool isNumber(string s) {
        int i=s.find_first_not_of(" "); //判断是否有非空字符
        if(i==string::npos)
        {
            return false;
        }
        int j=s.find_last_not_of(" ");
        s=s.substr(i,j-i+1);
        int e=s.find("e");  
        if(e==string::npos)     //无e整体判断
        {
            if(judgeDigit(s))return true;
            else return false;
        }
        else 
        {
            if(judgeDigit(s.substr(0,e))&&judgeExponent(s.substr(e+1))) //有e则分为底数和指数判断
                return true;
            else return false;
        }
    }
};

 

你可能感兴趣的:(Leetcode)