题目描述
数字以 0123456789101112131415... 的格式序列化到一个字符串中,求这个字符串的第 index 位(从0开始计数)。
解题思路
数学归纳
class Solution {
public:
int digitAtIndex(int index) {
if(index <= 0) return -1;
int digits = 1;
while(true) {
int numbers = countOfIntegers(digits);
if(index < numbers*digits) return digitAtIndex(index, digits);
index -= digits*numbers;
digits++;
}
return -1;
}
int countOfIntegers(int digits) {
if(digits == 1) return 10;
int count = (int)pow(10,digits-1);
return 9*count;
}
int digitAtIndex(int index, int digits) {
int number = beginNumber(digits) + index/digits;
int indexFromRight = digits-index%digits;;
for(int i=1; i<indexFromRight; ++i) number /=10;
return number%10;
}
int beginNumber(int digits) {
if(digits == 1) return 0;
return (int)pow(10,digits-1);
}
};