数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
思路:count位数共在序列中占(count位数的个数*count)位,当count=1时,共有9位,当count=2时,共有90*2位,当count=3时,共有900*3位,所以n位数共有9*n*10^(n-1)位。我们先判断第n位对应几位数,再找出对应的数字,再找具体的某一位
class Solution {
public int findNthDigit(int n) {
if(n < 10){
return n;
}
int res;
int digit = 1;
long count = 9;
int num = 0;
long start = 1;
while(n > count){
n -= count;
digit++;
start *= 10;
count = 9 * start * digit;
}
num = (int)start + (n - 1) / digit;
return num / (int)Math.pow(10, digit - (n - 1) % digit - 1) % 10;
}
}