题目描述
数字以0123456789101112131415…的格式序列化到一个字符序列中。
在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数求任意位对应的数字。
样例
输入:13
输出:1
golang 代码
func digitAtIndex(n int) int {
// 1-9 9个1位数 10-99 90个2位数 100-999 900个3位数 1000-9999 9000个4位数
var i,j,k = 9,1,1 //i表示9 ,j表示几位数 , k表示第几位开始
for n > i * j {
n -= i * j
i *= 10
j++
k *= 10
}
order := k + (n - 1) / j
//对位数求余,余几就是第几位。余0表示最后一位 如190,表示100,余1,表示第一位1,余2,表示第二位0
num := n % j
if num == 0 {
num = j
}
for m := 0 ; m < j - num ; m++ {
order /= 10
}
return order%10
}