题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

数值(按顺序)可以分成以下几个部分:

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

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

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

["+100", "5e2", "-123", "3.1416", "-1E-16", "0123"]
部分非数值列举如下:

["12e", "1a3.14", "1.2.3", "+-5", "12e+5.4"]

C++实现

class Solution {
public:bool isUnsignedInteger(char *&str){ //参数是个引用,指向的是char类型指针char *before=str;//拷贝原来的值while(*str>='0' && *str<='9'){str++;}return str>before; //若是整数}bool isInteger(char *&str){if(*str=='+' || *str=='-'){++str;}return isUnsignedInteger(str); }bool isNumber(string s) { //去掉字符串对象的首位空格if(!s.empty()){s.erase(0,s.find_first_not_of(" "));s.erase(s.find_last_not_of(" ") + 1);}char arr[30]="",*str=arr;strcpy(arr,s.c_str());//再s的声明周期内有效bool isNum=isInteger(str);if(*str=='.'){str++;isNum=isUnsignedInteger(str)||isNum;}if(*str=='E'||*str=='e'){str++;//判断后要把指针后推isNum=isInteger(str)&&isNum;}return isNum&&(*str=='\0');//如果字符串正好检查完成并且前面匹配成功}
};

积累:①C++ string对象的erase()函数删除字符,从第一个参数开始删除,第二个参数是删除的个数。②C++ string对象find_first_not_of("sdfsd")函数是返回第一个参数中没有的字符下标。

表示数值的字符串——《剑指offer》相关推荐

  1. 《剑指offer》题目说明

    剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...

  2. C#LeetCode刷题-剑指Offer

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...

  3. 《剑指offer》75题 C++详细题解

    目录 简单: 剑指 Offer 03. 数组中重复的数字 map: unordered_map: 原地交换 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 出栈入栈 双 ...

  4. 算法题解(剑指Offer篇)

    文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...

  5. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

  6. 剑指Offer面试题解总结11-20

    目录 剑指Offer(11~20) 旋转数组中的最小数字 矩阵中的路径 剪绳子 剪绳子II 二进制中1的个数 数值的整数次方 打印从1到最大的n位数 删除链表的节点 正则表达式匹配 表示数值的字符串 ...

  7. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  8. leetcode刷题笔记——剑指offer(二)[回溯、排序、位运算、数学、字符串]

    这里写目录标题 搜索与回溯 剑指 Offer 12. 矩阵中的路径 剑指 Offer 13. 机器人的运动范围 剑指 Offer 34. 二叉树中和为某一值的路径 剑指 Offer 36. 二叉搜索树 ...

  9. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  10. 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中

    Leetcode题集 [剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet] [剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组] [剑指offe ...

最新文章

  1. CVPR2021|基于分类深度分布网络的单目3D物体检测
  2. R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
  3. easypoi实现Excel导入
  4. [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
  5. BRCM eCos下的编译及问题
  6. Acwing第 19 场周赛【完结】
  7. 请查收 | 2021 阿里妈妈技术文章回顾
  8. 本地开发时连接后台数据库时出现的错误,附自救方法
  9. 软件构造学习笔记-第十二周
  10. Nhibernate+MVC开发日志
  11. JAVA MD5加密用户信息
  12. 移动开发平台收入对比
  13. Android.mk 使用 环境 小结
  14. 3.企业安全建设入门(基于开源软件打造企业网络安全) --- 业务网安全加固
  15. 镀铬亮条怎么修复_「日系之光」曾经的亚洲C级车排面,十二代丰田皇冠全面修复日记...
  16. ACM投稿ccs concepts查询The ACM Computing Classification System
  17. (转)对冲基金不信中国经济数据,转用卫星监控6000块工业用地
  18. cad上样条曲线上的点太多了_学习CAD,我总结了五个阶段,你是那个段位?
  19. 转速闭环直流调速系统
  20. SRIO学习(三)——SRIO包

热门文章

  1. Chrome 扩展程序开发 Chrome Extensions
  2. 基于JAVA大学生健康电子档案系统计算机毕业设计源码+系统+lw文档+部署
  3. AC68U koolshare 梅林固件使用IPV6
  4. Anaconda创建虚拟环境以及常用的环境操作概念指令
  5. 【鱼骨图】【数学史】行列式、矩阵论的历史
  6. Future 用法详解
  7. 根据气象预警等级颜色获取图片名称,返回对应图片url的方法
  8. 新编大学英语5翻译整理
  9. 法规标准-GB/T 39265标准解读(2020版)
  10. 如何下载天坛街道卫星地图高清版大图