找规律题目。先找第几个数字,再从中取字符。
digit
代表这一段数字的位数(1-9是1位,10-99是两位…)times
代表的是当前位数对应的数量级(10, 100, 1000…)count
代表的是当前位数、当前数量级的字符总数(比如1位的有9*1个,2位的有90*2个…)- 先递推从
n
上减去每个数量级的数字总数直到剩下的n
已经无法容纳下一级的字符总数,那么剩下的n
就是介于两级之间了。用当前字符数的数量基数times
加上n-1
整除当前区段的位数就可以定位到是第几个数字了。 - 把这个数字变成字符串,
n-1
对digit
的余数作为index,即可得到答案。
代码:
1 | def findNthDigit(self, n: int) -> int: |