数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字
public int findNthDigit(int n) {
int i = 1;
//找出这个数字是几位数,并且是第几个几位数
while (n > (long) (0.9 * Math.pow(10, i)) * i) {
n -= 0.9 * Math.pow(10, i)*i;
i++;
}
//找出对应的那个i位数
String res = String.valueOf((long) Math.pow(10, i - 1) + (n - 1) / i);
return res.charAt((n - 1) % i) - '0';
}