这篇文章是程序自动发表的,详情可以见
这里
href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">
href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">
这是leetcode的第400题--Nth digit
题目
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, Note: n is positive and will fit within the range of a 32-bit signed integer (n < 231).
example:
Input: 11 Output: 0 Explanation: The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
思路 这道题和前面的Integer to Roman 方法类似,要根据n的范围来划分不同的结构,这里就是一个数字的位数,9 , 90 * 2, 900 * 3,... 找到n在的“区间”,然后即找出这个区间的某个数,这个数的某位(digit)
show me the code
class Solution(object): def findNthDigit(self, n): """ :type n: int :rtype: int """ if n <= 9: return n begin = 0 num = 0 while n >= begin: begin = 9 * (10 **num) *(num 1) num = 1 begin -= 9 * (10**(num-1))*num if n == begin : return 9 n -= begin tmp = int((n-1)/ num) 1 int("9"*(num -1)) #floor n = (n-1) % num return int(str(tmp)[n])