题目
代码(首刷看解析)
class Solution {
public:
int findNthDigit(int n) {
long base = 1;
int digit = 1;
while(n > 9*digit*base) {
n -= 9*base*digit;
base *= 10;
digit++;
}
// 哪个三位数呢?这样算:
long val = base + (n - 1) / digit;
// 是这个三位数的第几位呢?这样算:
int index = (n-1)%digit;
// 怎么把 val 的第 index 这一位数字抠出来呢?可以转化成字符串来算:
return to_string(val)[index] - '0';
}
};