數字序列中某一位的數字

2021-10-03 18:18:10 字數 857 閱讀 5459

面試題44:數字以0123456789101112131415…的格式序列化到乙個字串行中。在這個序列中,第5位(從0開始計數)是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。

比如查詢序列的第1001位是什麼數字?

1.序列的前10位是0~9這10個數字,沒有查過要查詢的位數1001

2.然後是兩位的數字10~99一共佔180位,累加190位也沒有超過1001

3.三位的數字100~999一共佔2700位,累加起來2890超過了1001,所以1001位所在的數字是乙個三位數。

4.已知三位數之前的數字總共占去190位,所以要查詢的是三位數字中的第(1001-190)=811位

5.811/3 = 270(餘1),所以找的是100+270-1 = 369後面的數字的第二位(這裡要注意,從0開始計數),即370的第二位即7

class

solution

}// 當我們知道要找的那一位數字位於某m位數之中後,就利用如下函式找出那一位數字

private

:int

digitsatindex

(int index,

int digits)

// 在上述函式中,我們需要知道m位數字的第乙個數字。

// 第乙個1位數是0,第乙個2位數是10,第乙個三位數是100。。。。。。

intbeginnumber

(int digits)

// 得到m位的數字,總共有多少個

// 個位數有10個,十位數有90個,百位數有900個

intcountofinteger

(int digits)

};

數字序列中某一位的數字

面試題44 數字序列中某一位的數字 題目 數字以0123456789101112131415 的格式序列化到乙個字串行中。在這 個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫一 個函式求任意位對應的數字。static int digit at uint32 t inde...

數字序列中某一位的數字

012345678910.序列中,第n位數 def solution n if n 0 return 1 if n 10 return n i 2 確定是第幾位數 sums 10 ret 0while true 一位數 0 9 共10個字元 兩位數 10 99 共180個字元 三位數 100 999...

數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中,在這個序列中。第五位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。暴力解法,從0開始計數,數到第n位。以1001位為例子。因為序列前10位是0 9這10個只有1位的數字。序...