44 數字序列中某一位的數字

2021-10-02 11:52:22 字數 851 閱讀 2453

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

​ 最常規的做法:從0開始對每個數字求位數個數並累加,直至n位於累加的範圍內,由此再具體求第n位對應的數字。常規做法是可行的,可其效率過低,應該有更好的做法。可以先考慮找規律:一位數0~9有10個,兩位數10~99有2*90個(即180個),三位數100~999有3*900(即2700個)……以此類推:乙個n位數有n*9*10^(n-1)個。至此我們可以通過此規律確定題目中的n是幾位數,此外可以確定到n具體位於哪個數字上的第幾位。例:當n為1001時,1001>10,則即求10為始端的第991位對應的數字,又991>180,則即求以100為始端的第881位對應的數字,再者811<2700,確定對應數字為3位數。由於811=3×270+1,則結果為以100開始的第270個數字即370的中間一位,也就是7.

**如下:

public

intgetgitnum

(int index)

int left=index+count;

int num=

(int

)math.

pow(

10,git-1)

+left/git;

if(git==

1)num--

; string strnum=integer.

tostring

(num)

;return strnum.

charat

(left%git)

-'0'

;}

44 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。示例 1 輸入 n 3 輸出 3 示例 2 輸入 n 11 輸出 0 限制 0 n 2 31注意 本題...

數字序列中某一位的數字

面試題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...