剑指 Offer 20. 表示数值的字符串
方法:分为几个部分判断 DA[.B][E/eC] D
其中D表示前后的空格,需要处理,跳过即可
A可以带正负号 有符号数
B无符号数
C可以为有符号数(带+-号)
小数点.后面必须是无符号数或者没有 如1.
同时小数点.前面可以没有数字 所以用numeric = findUnsignedInt(s,pos) || numeric(或)
E/e前后必须有数字 因此用 numeric = numeric && findInt(s,pos)
class Solution {
public:
bool isNumber(string s) {
//DA[.B][E/eC] D
//A可以带正负号 有符号数
//B无符号数
//C有符号数
//处理前面的空格
int pos = 0;
while(s[pos]!='\0' && s[pos]==' ')
{
++pos;
}
//A部分
bool numeric = findInt(s,pos);
//B部分
if(s[pos]=='.')
{
//.后面必须是无符号数或者没有 如1.
//.前面可以没有数字 所以用||
++pos; //看小数点后的呀
numeric = findUnsignedInt(s,pos) || numeric;
}
//C部分
if(s[pos]=='e'||s[pos]=='E')
{
++pos; //看e后面的!!
numeric = numeric && findInt(s,pos);
}
while(s[pos]!='\0' && s[pos]==' ')
{
++pos;
}
return numeric && (s[pos]=='\0');
}
bool findUnsignedInt(const string& s,int& pos)
{
int save = pos;
while(s[pos]!='\0' && s[pos]>='0' && s[pos]<='9')
{
++pos;
}
return pos>save; //说明有数字
}
bool findInt(const string& s,int& pos)
{
//
if( s[pos]=='-' || s[pos]=='+')
{
++pos;
}
return findUnsignedInt(s,pos);
}
};
剑指 Offer 20. 表示数值的字符串的更多相关文章
- 剑指 Offer 20. 表示数值的字符串 + 有限状态自动机
剑指 Offer 20. 表示数值的字符串 Offer 20 常规解法: 题目解题思路:需要注意几种情况: 输入的字符串前后可能有任意多个空格,这是合法的. 正负号: (1)正负号只能出现一次. (2 ...
- 【Java】 剑指offer(20) 表示数值的字符串
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如, ...
- Go语言实现:【剑指offer】表示数值的字符串
该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2",&qu ...
- 剑指offer——22表示数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- 剑指Offer 53. 表示数值的字符串 (字符串)
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- 《剑指offer》-表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1416&q ...
- [剑指Offer] 53.表示数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- [剑指offer] 53. 表达数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- 剑指offer:表示数值的字符串
题目描述: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3. ...
随机推荐
- Windows Server 2008 系统加固
账号安全:更改管理员账号 更改管理员账户名来避免攻击,提高系统安全性. 以Administrator账户登录本地计算机,开始->运行->compmgmt.msc(计算机管理)->本地 ...
- 超详细的VMware安装Centos7教程
下载centos镜像 https://wiki.centos.org/Download 注:真正生产环境的oracle数据库一般是一整台服务器只用作数据库,不会安装其他应用,也不会安装xwindow图 ...
- animate.css VUE 使用
1.安装 npm i animate.css --save 2.引用 main.jsimport 'animate.css' 3.使用 <img v-show="welcomeinde ...
- 记一次centos挂载ceph存储的坑
起因 生产有两台服务器,准备用来跑工作流,执行的资源的是放在ceph存储集群中,第一步挂载ceph 执行命令:mount -t ceph xxx:xxx -o name=admin,secret=AQ ...
- 前端规范之Git工作流规范(Husky + Comminilint + Lint-staged)
代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...
- Serverless 工程实践 | 零基础上手 Knative 应用
作者|刘宇 前言:Knative 是一款基于 Kubernetes 的 Serverless 框架.其目标是制定云原生.跨平台的 Serverless 编排标准. Knative 介绍 Knative ...
- 2020 年国内 Serverless 用户规模:阿里云占比第一,达 66%
在中国信息通信研究院重磅发布的国内首个<云原生用户调查报告>中,阿里云 Serverless 产品凭借在双十一的技术锤炼和丰富的应用实践,在国内 Serverless 用户规模的占比达到 ...
- C++优化列表
#pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC ...
- DL4J实战之四:经典卷积实例(GPU版本)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- MySQL:基础语法-3
MySQL:基础语法-3 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...