Leetcode400
1 位数有 1*9
2 位数有 2*90
3 位数有 3 *90
n位数有 (n-1)*9* 10**n-1
确定位数:
确定数字:
确定数字的哪一位:
比如第13位 计算 13-9=4 ,从9开始偏移4个,但是偏移算的话需要从0,即有 3/2=1 10+1=11 确定是11, 3%2=1 确定下标为1
对应二位数字 10
10的第一位数字相对于来说是1 ,第二位数字是0,也就是在11的位置
可能说的不太清楚,代码如下:
public int findNthDigit(int n) {
//获取长度 int len =1;
//边界 long boder=9; //转化为long
long N=n; while(N> len*boder){ // 9 180 2700 算出位数
N=N-boder*len; boder=boder*10; len++; } int offset=(int)(N-1)/len; //算出偏移 int begin = (int) boder/9; //多少位 int mod =(int) (N-1)%len; //取余 String target = String.valueOf(begin+offset); int ans =target.charAt(mod)-'0' ; return ans; }
写博客是为了让别人能明白,之后在是自己明白. 如果有不明白的地方欢迎加Q3378404370 讨论