问题
例子
思路
-
方法1
$$$$
- 确定位数【i位数共有多少位数字:10*(i-1)9i】
- 确定所在的数字
- 确定是哪一位数
-
方法2
$$$$
代码
//方法1
class Solution {
public int findNthDigit(int n) {
//所在数字是i位
int i=1;
//当n为10^9时,区间最大值>Integer.MAX_VALUE
while(n > (long)Math.pow(10,i-1)*9*i) {
n-=(long)Math.pow(10,i-1)*9*i;
i++;
}
//是哪一个数字 10^(i-1)是i位数的起始数字 如:2位数 10
//n为第几个数,n-1为下标,(n-1)/i 数坐在的下标 (n-1)%i在i长度中的下标
long num = (int)Math.pow(10,i-1)+(n-1)/i;
String s = String.valueOf(num);
return s.charAt((n-1)%i)-'0';
}
}
//方法2