首页 > 其他分享 >剑指 Offer 20. 表示数值的字符串

剑指 Offer 20. 表示数值的字符串

时间:2023-07-19 21:13:57浏览次数:45  
标签:满足条件 20 遇到 Offer 合法 字符串

题目:

#遇到数字:一定合法
#遇到'.'且合法需要满足条件:之前没出现过'.',之前没出现过'e'
#遇到'e'且合法需要满足条件:之前没出现过'e',之前出现过整数
#遇到'+'或者'-'且合法需要满足条件:位于字符串第一位,或者紧跟在'e'之后  

class Solution {
public:
    bool isNumber(string s) {
        int i=0;
        while(i<s.size()&&s[i]==' '){      #删除前面所有空格
            i++;
        }
        s=s.substr(i);                     #用s=s.substr(i)      从第i位开始的子串代替原字符串
        while(s.back()==' '){              #删除末尾所有空格
            s.pop_back();
        }
        bool numFlag=false;
        bool dotFlag=false;
        bool eFlag=false;
        for(int i=0;i<s.size();i++){
            if(isdigit(s[i])){              #遇到数字,用isdigit()函数判断
                numFlag=true;
            }
            else if(s[i]=='.'&&!dotFlag&&!eFlag){       #遇到'.'且合法:之前没出现过'.',之前没出现过'e'
                dotFlag=true;
            }
            else if((s[i]=='e'||s[i]=='E')&&!eFlag&&numFlag){     #遇到'e'且合法:之前没出现过'e',之前出现过数字
                eFlag=true;
                numFlag=false;                     #因为'e'之后至少要有一个数字,所以numFlag=false
            }
            else if((s[i]=='+'||s[i]=='-')&&(i==0||s[i-1]=='e'||s[i-1]=='E')){       #遇到'+'或者'-'且合法:位于字符串第一位,或者紧跟在'e'之后  

            }
            else{                 #其他情况都违法
                return false;        
            }
        }
        return numFlag;           #出现数字并且一直合法,即为数值
    }
};

标签:满足条件,20,遇到,Offer,合法,字符串
From: https://www.cnblogs.com/fly-smart/p/17566736.html

相关文章

  • LeetCode 1201. Ugly Number III 数学+二分答案
    Anuglynumberisapositiveintegerthatisdivisibleby\(a\),\(b\),or\(c\).Givenfourintegers\(n\),\(a\),\(b\),and\(c\),returnthe\(n\)thuglynumber.Solution考虑如何二分答案,假设一个函数\(f(num,a,b,c)\)会得到\([1,num]\)中uglynumb......
  • 2023.7.19 周三:冒泡排序
    1importjava.sql.SQLOutput;2importjava.util.Arrays;3importjava.util.Scanner;4//冒泡排序5publicclasstest{6publicstaticvoidmain(String[]args){7int[]a={5,4,6,8,9,1,7,2,3};8intarray[]=sort(a);9S......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(1)
    1001Hide-And-SeekGame题意:给出一颗树,两人在树上特定两点来回走,问最早在那个节点相遇思路:枚举所有点,看它是否同时在两条链上,如果在,那么结合周期、两人最早到达时间,返回到达时间得到4个同余方程(拓展欧几里得),然后得到最小可能解#pragmaGCCoptimize(2)#pragmaGCCoptimize(3......
  • 20230719巴蜀暑期集训测试总结
    T1赛时打了一个\(O(n^3)\)\(16pts\)暴力和一个似乎可以过一个\(20pts\)特殊性质但其余无正确性的贪心。结果出来发现特殊性质挂了一个点,另一个地方还莫名其妙对了。说明特殊性质挂掉了,如果运气不好可能就挂到\(16pts\)了。考后看题解发现\(O(n^2)\)其实也是不难想的,有点......
  • [SUCTF 2019]EasySQL
    [SUCTF2019]EasySQL题目来源:buuctf题目类型:web涉及考点:SQL注入、堆叠注入1.题目给了一个输入框,先随便传点东西进去传入数字回显如下:传入flag回显如下:传入字符无回显没什么其他线索了,还是爆破一下看看过滤了哪些字符:返回长度为507的字符都是被过滤了的,包括uni......
  • day83(2023.7.19)
    1.使用SqlSession操作数据库 2.Mapper动态代理原理3. MyBatis新增 运行结果:4.MyBatis修改没优化前: 优化后:(只需写一次就ok了) 运行结果:4.MyBatis删除、根据Id查询 运行结果: 5.根据ID查询用户和运行结......
  • 2023.7.18 linux 设备树
    CONFIG_OF 此内核配置启用设备树,使用相关api需要包含:#include<linux/of.h>#include<linux/of_device.h> 查看API:https://docs.kernel.org/devicetree/kernel-api.html Anintroductiontotheconceptofaliases,labels,phandles,andpaths Whenusin......
  • machine learning-2023-07-19
    questions【链接】││──math││──线性回归││──逻辑回归│└──梯度下降││──python││──numpy(科学计算库)││──pandas(数据分析处理库)││──matplotlib(数据可视化库)│└──scikit-learn(机器学习库)││──模式识别......
  • Visual Studio 2022 Net6.0 无法发现testcase, 也无法执行test case
         解决办法:      <PropertyGroup>                  <CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>         <GenerateAssemblyInfo>false</GenerateAssemblyInfo>     ......
  • 【游记】2023杭电多校
    前言组队情况:team943wsyear-chengcheng567-ShaoJiaDay1赛果:solved10/12,rank4,1firstblood赛前约定ShaoJia开前\(4\)题,chengcheng567开中间\(4\)题,我开后\(4\)题。于是开场先看1009,一眼签到,直接过了,但是差\(5\)秒一血(但阻止不了我拿另一个一血)......