劍指offer_整數中1出現的次數
阿新 • • 發佈:2018-11-30
題目描述
求出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