AcWing 57. 数字序列中某一位的数字
原题链接
简单
作者:
STU756
,
2020-09-10 00:43:38
,
所有人可见
,
阅读 456
class Solution {
public int digitAtIndex(int n) {
/**
* 数字范围 数量 位数 占多少位
* 1-9 9 1 9
* 10 -99 90 2 180
* 100-999 900 3 1800
* ....
*/
int digit = 1; //数字的位数
long start = 1; //数字范围开始第一个数
long count = 9;
while(n > count) {
n -= count;
digit++;
start *=10;
count = digit * start * 9;
}
long num = start + (n - 1) / digit;
return Long.toString(num).charAt((n -1 ) % digit) - '0';
}
}class Solution {
public int digitAtIndex(int n) {
/**
* 数字范围 数量 位数 占多少位
* 1-9 9 1 9
* 10 -99 90 2 180
* 100-999 900 3 1800
* ....
*/
int digit = 1; //数字的位数
long start = 1; //数字范围开始第一个数
long count = 9;
while(n > count) {
n -= count;
digit++;
start *=10;
count = digit * start * 9;
}
long num = start + (n - 1) / digit;
return Long.toString(num).charAt((n -1 ) % digit) - '0';
}
}