详细
先求出这个数的位数有多少,再求出这个数是哪个,再求出这个位置是什么数
class Solution {
public:
int check(int num,int a){
string res = "";
while(num){
res = res + (char)((num%10) + '0');
num /= 10;
}
reverse(res.begin(),res.end());
return (res[a-1] - '0');
}
int findNthDigit(int n) {
long long digitNum = 1,start = 1,count = 9;
while(n > count){
n -= count;
start *= 10;
digitNum++;
int numSum = 9*start;
count = numSum*digitNum;
}
int a = start + (int)((n-1)/digitNum);
int b = n % digitNum == 0 ? digitNum : n % digitNum;
//cout << n << " " << digitNum << " " << start << " " << count << " " << a << " " << b << endl;
return check(a,b);
}
};