zoukankan      html  css  js  c++  java
  • 65. 有效数字 力扣 模拟题 细节,string用法

    题目描述:

    有效数字(按顺序)可以分成以下几个部分:

    一个 小数 或者 整数
    (可选)一个 'e' 或 'E' ,后面跟着一个 整数
    小数(按顺序)可以分成以下几个部分:

    (可选)一个符号字符('+' 或 '-')
    下述格式之一:
    至少一位数字,后面跟着一个点 '.'
    至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
    一个点 '.' ,后面跟着至少一位数字
    整数(按顺序)可以分成以下几个部分:

    (可选)一个符号字符('+' 或 '-')
    至少一位数字
    部分有效数字列举如下:

    ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]
    部分无效数字列举如下:

    ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]
    给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

    题源:https://leetcode-cn.com/problems/valid-number/

    题解:全靠细节

    string取一小截,可以用string.substr(起始位置,长度)

    class Solution {
    public:
        bool isint(string s)
        {
            int l=s.size();
            int i=0;
            if (s[i]=='+' || s[i]=='-') i++;
            int num=0;  //需要考虑的细节,就是至少是有一个数字的
            for(;i<l;i++)
             if (s[i]>='0' && s[i]<='9')   {num++; continue;}
               else return false;
            if(num>0) return true;
              else return false;
        }
    
        bool isfloat(string s)
        {
            int l=s.size();
            int flagdot=0;
            int posdot=-1;
            int i=0;
            if (s[i]=='+' || s[i]=='-') i++;
    
            for(int j=i;j<l;j++)
              if(s[j]=='.') { flagdot++; posdot=j;}
            if (flagdot!=1) return false;
    
            int num=0;  //需要考虑的细节,就是至少是有一个数字的
            for(;i<posdot;i++)
             if(s[i]>='0' && s[i]<='9') {num++; continue;}
                else return false;
    
            for(i=posdot+1;i<l;i++)
                if(s[i]>='0' && s[i]<='9') {num++; continue;}
                else return false;
            if (num>0)  return true;
              else return false;
        }
    
        bool isNumber(string s) {
        int l=s.size();
    
         int flagE=0;
         int posE=-1;
         for(int i=0;i<l;i++)
          if (s[i]=='E' || s[i]=='e')  {flagE++; posE=i;}
         if (flagE>1) return false;
        
         bool res=1;
         if (flagE==1)
         {
             
             if( isint(s.substr(posE+1,l-posE)) &&  
                 ( isint(s.substr(0,posE-0)) || isfloat(s.substr(0,posE-0)) ) )
                  return true;
              else return false; 
         }
         else 
         {
             if ( isint(s.substr(0,posE-0)) || isfloat(s.substr(0,posE-0)) ) return true;
                else return false;
         }
    
        }
    };
  • 相关阅读:
    职场“十不要”,让你少奋斗30年
    360与QQ在用户界面上的明显BUG
    urlMappings在asp.net2.0,asp.net4.0中的差异
    NHibernate主键生成方式
    MDaemon 常用视频教程
    sqlserver 差异备份与还原示例
    没有不死的爱情, 只有平淡的亲情——如何维系我们的婚姻
    25 个在 Web 中嵌入图表的免费资源
    atoi,atol,strtod,strtol,strtoul实现类型转换
    人生之精华,胜读十年书
  • 原文地址:https://www.cnblogs.com/stepping/p/14893642.html
Copyright © 2011-2022 走看看