Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

找递增序列下标数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。

在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。

请写一个函数求任意位对应的数字。

样例
输入:13

输出:1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

class Solution {
public:
int digitAtIndex(int n) {
if(n<=9){
return n;
}
int len = 1;
long count = 9;
int start = 1;
while(n>len*count){
n-=len*count;
len+=1;
count*=10;
start *= 10;
}
start += (n-1)/len;
string str = to_string(start);
return str[(n-1)%len]-48;
}
};

你的支持是我坚持的最大动力!