劍指Offer——整數中1出現的次數(從1到n整數中1出現的次數)

題目描述

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有一、十、十一、十二、13所以共出現6次,可是對於後面問題他就沒轍了。ACMer但願大家幫幫他,並把問題更加廣泛化,能夠很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。
# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # write code here
        count=0
        former=0
        round,weight,base=n/10,n%10,1
        count+=round
        if weight!=0:
            count+=1
        while(round):
            former+=base*weight
            base*=10
            round,weight=round/10,round%10
            count+=round*base
            if weight>1:
                count+=base
            elif weight==1:
                count+=1+former
        return count
相關文章
相關標籤/搜索