【剑指Offer】-数字序列中的某一位
题目链接:剑指Offer44数字序列中的某一位
题目描述:
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
示例 1:1
输入:n = 3
输出:3
示例 2:
输入:n = 11
输出:0
限制:
0 <= n < 2^31
题解:数字序列中的某一位题解
1.确定所求数位的所在数字的位数
2.确定所求数位的数字num
3.确定所求数位是num中的哪一位
/**
* @param {number} n
* @return {number}
*/
var findNthDigit = function(n) {
let digit = 1; //数的位数
let start = 1; //每 digit 位数的起始数字(即:1, 10, 100)
let count = 9; //每digit位数的数字所占位数
while(n > count) //1.确定n的位数
{
n -= count;
digit += 1;
start *= 10;
count = digit * start * 9;
}
//2.确定是哪个数字
let num = start + Math.floor((n - 1) / digit);
//3.确定是该位数字的哪一位
return num.toString().charAt((n-1)% digit) - 0;
};