劍指 Offer數字序列中某一位的數字

2021-10-10 22:59:15 字數 1410 閱讀 3257

數字以0123456789101112131415…的格式序列化到乙個字串行中。在這個序列中,第5位(從下標0開始計數)是5,第13位是1,第19位是4,等等。

請寫乙個函式,求任意第n位對應的數字。

示例 1:

輸入:n = 3

輸出:3

示例 2:

輸入:n = 11

輸出:0

**:

所以,要想求第n位對應的數字,可以從以下分析:

將 101112 ⋯ 中的每一位稱為 數字 ,記為 n ;

將 10, 11, 12, ⋯ 稱為 數字 ,記為 num;

數字 10 是乙個兩位數,稱此數字的 位數 為 2 ,記為 digit;

每 digit 位數的起始數字(即:1, 10, 100, ,⋯),記為 start 。

確定 n 所在 數字 的 位數 ,記為 digit;

確定 n 所在的 數字 ,記為 num;

確定 n 是 num中的哪一數字,並返回結果。

如下圖所示,所求數字 在從數字 start 開始的第 [(n - 1) / digit]個 數字 中( start為第 0 個數字)。

}}

變數digit,代表當前數字位數,例如,10 是乙個兩位數,稱此數字的 位數 為 2 ,記為 digit;

變數start,代表每 digit 位數的起始數字(即:1, 10, 100, ,⋯),記為 start 。

當前位cur,代表個十百千,如1234,4代表個位,3代表百位,記為cur。

高位high,代表當前位的高位,如1234,當前位如果是3,高位是12.記為high。

低位low,代表當前位的低位,如1234,當前位如果是3,低位是4.記為low。

劍指offer 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式求任意位對應的數字。主要思路 舉例分析,比如找第1001位數字,1 1位數的數值有10個 0 9,數字為10 1 10個,顯然100...

劍指Offer 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。意思大概是這麼個意思,但是輪到自己寫的時候總是出錯,不知道為啥,於是改了種方法,就是n為兩位數以上的時...

劍指offer 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。示例 1 輸入 n 3輸出 3示例 2 輸入 n 11輸出 0解題思路 用最簡單的方法,依次遍歷,計算...