目录
数字序列中的某一位数字
描述
示例 1
示例 2
限制
方法:找规律
数字序列中的某一位数字
描述
数字以0123456789101112131415…的格式序列化到一个字符序列中。
在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
示例 1
输入
n = 3输出
3
示例 2
输入
n = 11输出
0
限制
方法:找规律
本题还是找规律,详细参考k神的解答
- 将101112...中的每一位称为数位,记为n
- 将10,11,12,...称为数字,记为num
- 数字10则是两位数,此数字的位数为2,记为digit
- 每digit位数的起始数字(即:1,10,100,...)记为start
求解步骤如下:
- 确定n所在的数字的位数,记为digit
- 确定n所在的数字,记为num
- 确定n是num的哪一数位,并返回结果
class Solution {
public int findNthDigit(int n) {
int digit = 1;
long start = 1;
long count = 9;
while (n > count) {//确定n所在数字的位数digit
n -= count;
digit += 1;
start *= 10;
count = digit * start * 9;
}
long num = start + (n - 1) / digit;//确定所求数位所在的数字num
return Long.toString(num).charAt((n - 1) % digit) - '0';//确定所求数位在num的哪一数位
}
}



