數字以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解題思路 用最簡單的方法,依次遍歷,計算...