在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。
注意:
n 是正数且在32为整形范围内 ( n < 231)。
示例 1:
输入: 3 输出: 3
示例 2:
输入: 11 输出: 0 说明: 第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。
C++
class Solution {
public:
int findNthDigit(int n)
{
int a=9;
long long i=1;
int start=1;
while(i*a<n)
{
n-=i*a;
i++;
a*=10;
start*=10;
}
int last=start+(n-1)/i;
int index=(n-1)%i;
string tmp=to_string(last);
return tmp[index]-'0';
}
};
python
class Solution:
def findNthDigit(self, n):
"""
:type n: int
:rtype: int
"""
i=1
start=1
a=9
while i*a<n:
n-=i*a
i+=1
a*=10
start*=10
last=start+(n-1)//i
index=(n-1)%i
tmp=str(last)
return int(tmp[index])