解题思路
/*
1~9 1位 9
10~99 2位 90*2
100~999 3位 900*3
*/
1 首先我们要确定n在哪个区间内。
随后的n意思是在该区间内的第几位数。
2 算出n在具体的第几个数,即(n-1)/a 从0开始。
3 算出具体在这个数的第几个数字,即(n-1)%a 从0开始。
4 如果不理解上面的式子是怎么来的,我们可以通过举例来得出
这几个式子。
相关代码
class Solution {
public int findNthDigit(int n) {
int count = 9;
int a = 1;
while(n>count){
n = n-count;
a++;
count = (int)(9*Math.pow(10,a-1)*a);
}
String s="";
int t = (n-1)/a;
int mod = (n-1)%a;
int start = (int)(Math.pow(10,a-1));
int num = start+t;
s=s+num;
return s.charAt(mod)-'0';
}
}