算法作业
给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。
public class Solution {
public int findNthDigit(int n) {
long len = 1; //定义数字的长度
long start = 1; //定义不同位的起始数字
while (n >= start * len * 9 + 1) //起点为长度len的数字start
{
n -= start * len * 9;
len++;
start *= 10;
}
long num = n / len; //从start计算n的位置
long m = n % len;
if(m != 0) //余数为0则在当前数字末尾,否则在下一个数字余数-1位
return String.valueOf(start + num).charAt((int)m - 1) - '0';
return String.valueOf(start + num - 1).charAt((int)len - 1) - '0';
}
}