剑指 offer 44 数字序列中的某一位的数字
在
i
=
9
i =9
i=9的时候计算共有多少位会出现溢出,这时候出循环直接计算就好。
class Solution {
public int findNthDigit(int n) {
int i=1;
int counts = countOfIntegers(i);
if(n<counts){
return n;
}
while (n>counts && i<9){
n= n - counts;
i++;
counts = countOfIntegers(i);
}
int num = ((int)Math.pow(10,i-1)+n/i);
return (num/(int)Math.pow(10,(i-(n%i))-1))%10;
}
public int countOfIntegers(int m){
if(m<=0){
return 0;
}
if(m==1){
return 10;
}
return m*9*(int)Math.pow(10,m-1);
}
}