方法:分为几个部分判断 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. 表示数值的字符串的更多相关文章

  1. 剑指 Offer 20. 表示数值的字符串 + 有限状态自动机

    剑指 Offer 20. 表示数值的字符串 Offer 20 常规解法: 题目解题思路:需要注意几种情况: 输入的字符串前后可能有任意多个空格,这是合法的. 正负号: (1)正负号只能出现一次. (2 ...

  2. 【Java】 剑指offer(20) 表示数值的字符串

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如, ...

  3. Go语言实现:【剑指offer】表示数值的字符串

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2",&qu ...

  4. 剑指offer——22表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  5. 剑指Offer 53. 表示数值的字符串 (字符串)

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  6. 《剑指offer》-表示数值的字符串

    请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1416&q ...

  7. [剑指Offer] 53.表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  8. [剑指offer] 53. 表达数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  9. 剑指offer:表示数值的字符串

    题目描述: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3. ...

随机推荐

  1. 使用uView UI+UniApp开发微信小程序--微信授权绑定和一键登录系统

    在前面随笔<使用uView UI+UniApp开发微信小程序>和<使用uView UI+UniApp开发微信小程序--判断用户是否登录并跳转>介绍了微信小程序的常规登录处理和验 ...

  2. openldap 双主模式部署

    规划两台机器 系统版本centos7.5 master1上部署ldap: 一.安装启动openldap软件 yum -y install openldap compat-openldap openld ...

  3. Ubuntu解决安装没有候选

    Ubuntu解决安装没有候选 很多初次上手的小白们最头疼的可能就是一下这种问题了 这是我也载过很多次的坑,原因是软件安装源的问题,需要去软件安装设置里更改合适的源 结局方案如下:(具体操作) 有个So ...

  4. 配置一个简单的传统SSM项目

    背景 我们知道,从2002年开始,Spring一直在飞速的发展,如今已经成为了在Java EE开发中的标准,早期的项目都是传统的Spring-SpringMVC-Mybatis项目,打成一个war包丢 ...

  5. 在 ASP.NET Core 中自动启用 CAP 事务

    本篇文章旨在描述如何在 ASP.NET Core项目中并以一种简便的方式启用CAP事务,因为在我们的示例中都是直接演示比较直观的方式,没有进行封装,有些初学者同学不太会,找到问我如何封装,本篇文章主要 ...

  6. 简单Tab切换

    延迟Tab切换,使用css中的flex布局,原生js实现.(京东首页菜单也有此延迟功能哦!) 每天进步一丢丢~~ 1.延迟Tab切换 <!DOCTYPE html> <html la ...

  7. tomcat unkonwhost

    服务器能ping通域名,tomcat死活不行,重启tomcat解决

  8. js 判断一个变量是否有值

    最近遇到一个面试题,判断一个变量是否有值,当时有点蒙,其实很简单,就是判断 变量是否为 undefined或者null function isFlag(val) { if(Object.prototy ...

  9. logstash输出到rabbitmq

    场景 将应用日志文件发送到rabbitmq. filebeat 不支持rabbitmq作为输出.因此,需要先将文件由filebeat发送到logstash ,再由logstash 输出到rabbitm ...

  10. Miller-Rabin学习笔记

    首先给出两个定理: 1.费马小定理 设p是一个素数,a是一个整数,且不是p的倍数,那么 \(a^{p−1} \equiv\ 1 \pmod p\) 2.二次探测定理 若\(p\)是素数,\(x\)是一 ...