算法27-----第N個數字
阿新 • • 發佈:2018-09-05
說明 lse for else 範圍 整形 數字 部分 題目
1、題目:
在無限的整數序列 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的一部分。
2、思路:
位數相加,N - 位數。
3、代碼
def findNthDigit(self, n): """ :type n: int :rtype: int""" num = len(str(n)) a,b,c = 0,0,0 for i in range(1,num+1): b = a a += i*(10**i-10**(i-1)) if a>=n: c = i break temp=0 if num!=1: temp = 10**(c-1)-1 # b = a - num *temp k = (n-b)//c l= (n-b) % c if l == 0: return int(str(k + temp)[-1]) else: return int(str(k + temp+1)[l-1])
算法27-----第N個數字