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'; } } };