1.问题描述
小U正在数偶数,从 0,2,4,6,8,10,12,…0,2,4,6,8,10,12,… 开始,依次将这些数连在一起,形成一个无穷长的字符串,例如:"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。
测试样例
样例1:
输入:
n = 6
输出:1
样例2:
输入:
n = 10
输出:1
样例3:
输入:
n = 15
输出:8
2.解题思路
将n所代表的位置所代表的数字找出来,然后将这个数字转为字符串通过剩余的位置得到最后结果
3.算法步骤
1.将n进行预处理,处理出当前处于个位或者十位、百位、千位
2.得到当前的位数的第一个值
3.将剩余的n处理成当前的数字
4.Python3代码
def solution(n : list) -> int:
d_l = 1
count = 5
sta = 0
while n > d_l * count:
n -= d_l * count
d_l += 1
if count == 5:
count *= 9
sta += 1
else:
count *= 10
sta *= 10
if n % d_l == 0:
sta += (n // d_l - 1) * 2
s = str(sta)
print(sta)
return int(s[len(s) - 1])
else:
sta += (n // d_l) * 2
s = str(sta)
return int(s[n % d_l - 1])
5.算法复杂度分析
时间复杂度O(logn)
空间复杂度O(logn)