思路:按照每次位数的变化作划分,计算每个阶级的数据总量,算出所求数的阶级,然后进一步用除法算出所求数代表的那个数,和求模计算出那个数中的具体哪一位便可
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
public int findNthDigit (int n) {
//先错误判断
if(n<0){
return 0;
}
long width=1, num = n-1;
long scope_start=1 ,scope_len=9;
while(num>width*scope_len){
num-=width*scope_len;
width++;
scope_len*=10;
scope_start*=10;
}
long number = (scope_start+num/width);
if(number>9){
for(long i=(width-(num%width)-1);i>0;i--){
number=number/10;
}
}
return (int)number%10;
}
}