《剑指offer刷题笔记(7),Java面试回忆录

  1. 当e或E前面没有数字时,整个字符串不能表示数字,例如.e一、e1;
  1. 当e或E后面没有整数时,整个字符串不能表示数字,例如12e、12e+5.4;

样例:java

输入: "0"

输出: true

思路

(模拟,字符串处理)$ O(n)$git

  1. 先去除行首和行尾空格;面试

  2. 行首若是有一个正负号,直接忽略;markdown

  3. 若是字符串为空或只有一个’.’,则不是一个合法数;ide

  4. 循环整个字符串,去掉如下几种状况: 微服务

    (1) '.'或’e’多于1个; 学习

    (2) '.‘在’e’后面出现; code

    (3) ‘e’后面或前面为空,或者’e’前面紧跟着’.’; ip

    (4) 'e’后面紧跟着正负号,但正负号后面为空;文档

  5. 剩下的状况都合法

时间复杂度分析:整个字符串只遍历一遍,因此时间复杂度是 O ( n ) O(n) O(n)。

代码

class Solution {

public:

    bool isNumber(string s) {

        int i = 0;

        while (i < s.size() && s[i] == ' ') i ++ ; //删除行首空格

        int j = s.size() - 1;

        while (j >= 0 && s[j] == ' ') j -- ; //删除行末空格

        if (i > j) return false;

        s = s.substr(i, j - i + 1);

        if (s[0] == '-' || s[0] == '+') s = s.substr(1); //忽略行首正负号

        if (s.empty() || s[0] == '.'&& s.size() == 1) return false;//若是字符串为空或只有一个'.',则不是一个合法方案

        int dot = 0, e = 0;

        for (int i = 0; i < s.size(); i ++ )

        {

            if (s[i] >= '0' && s[i] <= '9');//遇到数字不作任何处理

            else if (s[i] == '.')

            {

### 最后

> **针对以上面试题,小编已经把面试题+答案整理好了,想要获取这份面试题+答案的朋友帮忙点赞后,[戳这里免费领取](https://gitee.com/vip204888/java-p7)就能够了**

![最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo](https://s2.51cto.com/images/20210811/1628627153953853.jpg)

![最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo](https://s2.51cto.com/images/20210811/1628627153784547.jpg)

![最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo](https://s2.51cto.com/images/20210811/1628627153328800.jpg)

# 面试专题

![image](https://s2.51cto.com/images/20210811/1628627153485922.jpg)

**除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也能够分享给你们学习**

![image](https://s2.51cto.com/images/20210811/1628627154814335.jpg)

![image](https://s2.51cto.com/images/20210811/1628627154572134.jpg)

?![image](https://s2.51cto.com/images/20210811/1628627155491768.jpg)
相关文章
相关标签/搜索