
class Solution {
public:
/*
小于10,1~9,9个数字,9位
小于100,10~99,90个数字,180位
小于1000,100~999,900个数字,2700位
*/
int findNthDigit(int n) {
long digit = 1; // 用来记录n属于几位数
long base = 9;
if(n<=9)
return n;
while(n-base*digit>0){
n = n - base*digit;
base = base * 10;
digit++;
}
// while循环执行完已经找到n是属于几位数。即digit的值
// whilie循环完以后n的值
int num = pow(10,(digit-1))+n/digit; // 找到所在数字
int bitcnt = n%digit; // 找到所在数字第几位
if(bitcnt==0){ // 如果bitcnt 等于0,说明在上一个num的末尾
string s = to_string(num-1);
return s[s.size()-1]-'0';
}else{ // 不等于0的情况
string s = to_string(num);
return s[bitcnt-1]-'0';
}
}
};