表示数值的字符串——《剑指offer》
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
数值(按顺序)可以分成以下几个部分:
若干空格
一个 小数 或者 整数
(可选)一个 '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》相关推荐
- 《剑指offer》题目说明
剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...
- C#LeetCode刷题-剑指Offer
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...
- 《剑指offer》75题 C++详细题解
目录 简单: 剑指 Offer 03. 数组中重复的数字 map: unordered_map: 原地交换 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 出栈入栈 双 ...
- 算法题解(剑指Offer篇)
文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...
- 剑指offer刷题记录 python3 Java
剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...
- 剑指Offer面试题解总结11-20
目录 剑指Offer(11~20) 旋转数组中的最小数字 矩阵中的路径 剪绳子 剪绳子II 二进制中1的个数 数值的整数次方 打印从1到最大的n位数 删除链表的节点 正则表达式匹配 表示数值的字符串 ...
- Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】
目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...
- leetcode刷题笔记——剑指offer(二)[回溯、排序、位运算、数学、字符串]
这里写目录标题 搜索与回溯 剑指 Offer 12. 矩阵中的路径 剑指 Offer 13. 机器人的运动范围 剑指 Offer 34. 二叉树中和为某一值的路径 剑指 Offer 36. 二叉搜索树 ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中
Leetcode题集 [剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet] [剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组] [剑指offe ...
最新文章
- CVPR2021|基于分类深度分布网络的单目3D物体检测
- R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
- easypoi实现Excel导入
- [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
- BRCM eCos下的编译及问题
- Acwing第 19 场周赛【完结】
- 请查收 | 2021 阿里妈妈技术文章回顾
- 本地开发时连接后台数据库时出现的错误,附自救方法
- 软件构造学习笔记-第十二周
- Nhibernate+MVC开发日志
- JAVA MD5加密用户信息
- 移动开发平台收入对比
- Android.mk 使用 环境 小结
- 3.企业安全建设入门(基于开源软件打造企业网络安全) --- 业务网安全加固
- 镀铬亮条怎么修复_「日系之光」曾经的亚洲C级车排面,十二代丰田皇冠全面修复日记...
- ACM投稿ccs concepts查询The ACM Computing Classification System
- (转)对冲基金不信中国经济数据,转用卫星监控6000块工业用地
- cad上样条曲线上的点太多了_学习CAD,我总结了五个阶段,你是那个段位?
- 转速闭环直流调速系统
- SRIO学习(三)——SRIO包