数字以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; } };
|