题解 |从1到n整数中1出现的次数

整数中1出现的次数(从1到n整数中1出现的次数)

https://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # bit 代表位数 个位 十位 百位 
        # high代表高位 low代表当前位数的更低位
        # 502223 bit = 100 high = 502 low = 23
        # cur = num/bit%10
        # cur > 1 : (high + 1) * bit
        # cur = 1 : high * bit + (1+low) 自身1 + 23个1即:100~123
        # cur = 0 :high * bit 0~4 = 5
        bit = 1
        sum = 0
        while(bit <= n):
            cur = (n // bit) % 10
            # 213 % 1 = 0
            low = n % bit
            high = n // bit // 10
            if cur > 1:
                sum += (high + 1) * bit
            elif cur == 1:
                sum += high * bit + (1+low)
            else:
                sum += high * bit
            bit = bit * 10
        return sum

全部评论

相关推荐

嘀哩咕噜说啥呢:27届,这简历,强的逆天,大厂实习随便冲,面经多少看点,hot100刷完,大厂随便挑了
点赞 评论 收藏
分享
你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务