ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

剑指 Offer 44. 数字序列中某一位的数字python

2021-12-25 16:01:39  阅读:161  来源: 互联网

标签:10 digit 数字 Offer python start num 数位


题目描述:

题解:

1.若n<10,则n对应0-9的一位数,直接返回n即可。

2.对于n>10情况,先将n-10,减去前面10个一位数,设置三个变量:

<1>digit表示当前数字数位,如0-9 digit=1,10-99 digit=2,初始化为2。

<2>start表示当前digit数位的开始数字,比如digit=2 start=10,digit=3 start=100。

<3>num表示数位=digit有多少个数字,digit=2,两位数共有10-99,90个,digit=3,三位数共有100-999,900个。

当n>num*digit,用n-num*digit,表示n对应的数字不在当前digit数位的num个数字中,digit+1 start=start*10 num = num*10

如果n<num*digit,表示n对应数字在当前数位=digit的num个数字中,a=start+n//digit,n//digit表示n对应的是当前digit数位中第几个数字,start+n//digit表示这个数字,n%digit表示对应该数字第几位。

class Solution:
    def findNthDigit(self, n: int) -> int:
        if n<10:
            return n
        n = n-10
        num = 90
        digit = 2
        start = 10
        while n>num*digit:
            n = n-num*digit
            num = num*10
            digit = digit+1
            start = start*10
        a = start+n//digit
        b = n%digit
        print(n,num,digit,start,a,b)
        return int(str(a)[b])

 

 

标签:10,digit,数字,Offer,python,start,num,数位
来源: https://blog.csdn.net/laurasam/article/details/122144176

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有