整数中1出现的次数 牛客网 剑指Offer
题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 class Solution: #run:30ms memory:5720k def NumberOf1Between1AndN_Solution(self, n): k = 1 if n < k: return 0 count, m = 0, 1 while m <= n: weight = n // m % 10 count += (n // m) // 10 * m if weight == k: count += (n%m + 1) if weight > k: count += m m *= 10 return count def NumberOf1Between1AndN_Solution2(self, n): k = 1 if n < k: return 0 count = 0 base = 1 r = n while r > 0: weight = r % 10 r = r// 10 count += r * base if weight == k: count += (n