解题思路1:
自然数序列的第n位为数字几
数学分析:
小于10,1-9,9个数字,9 位
小于100,10-99,90个数字,180位
小于1000,100-999,900个数字,2700位
各个区间的上下线[0,10),[10,100),[100,1000) 位数是1,2,3。。。
解题步骤:
》1.先确定第n个数在哪个区间内;
》2.再确定这个数属于哪个自然数;
》3.最后所在自然数得出数字;
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
public int findNthDigit (int n) {
//位数
int digiCont = 1;
//区间下限
int start = 1;
//区间位数
Long count = 9l;
while(n > count){
n-=count;
start*=10;
digiCont+=1;
//将Integer转成Long
count = Integer.toUnsignedLong(start*9*digiCont);
}
//num表示n所在的数字
int num = (n-1)/digiCont + start;
//num转成字符串
String s = String.valueOf(num);
//r表示n所在数字中的位置
int r = (n-1)%digiCont;
return Integer.parseInt(s.substring(r, r + 1));
}
}