1. 程式人生 > >劍指offer_整數中1出現的次數

劍指offer_整數中1出現的次數

題目描述

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # write code here
        res = 0
        res1 = 0
        base = 1
        while n:
            last = n%10
            temp = n/10
            if last == 0:
                res+=temp*base
            elif last == 1:
                res+=res1+1+temp*base
            else:
                res+=(temp+1)*base
            res1+= last*base
            base*=10
            n = temp
        return res