在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。
注意:
n 是正数且在32位整数范围内 ( n < 2)。
示例 1:
输入:
3
输出:
3
示例 2:
输入:
11
输出:
0
说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。
class Solution {
public:
int findNthDigit(int n) {
long maxBorder = 9;
long ten = 9;
int level = 1;
int num = 9;
if(n<10){
return n;
}
while(maxBorder < n){
level++;
ten = ten * 10;
num += ten;
maxBorder += ten * level;
}
int index = ((n - maxBorder + ten* level) + 1) / level + (num - ten);
int bit_index = (n - maxBorder + ten* level - 1 + level) % level;
for(int i = 0; i< level - bit_index - 1;i++){
index = index/10;
}
cout<<index<<endl;
return index % 10;
}
};