《劍指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)
相關文章
相關標籤/搜索