class Solution {
public int findNthDigit(int n) {
int[] field = {9,189,2889,38889,488889,5888889,68888889,788888889};
if(n<10)return n;
int t= 0;
for(int i:field){
if(n>i)
t++;
}
int index = n - field[t-1];
int num = (int)Math.pow(10,t)+index/(t+1);
if(index%(t+1)==0){
String s = "" +(num-1);
return s.charAt(t)-'0';
}else{
String s = "" +num;
return s.charAt(index%(t+1)-1)-'0';
}
}
}
首先分类,目标位数位于几位数的范围中,再寻找十进制数字,最后取余寻找单个数。
打个广告