"""
输入一个整数n,求这1-n这n个整数的十进制表示中1 出现的次数。
例如,输入12,1-12这些整数中包含1的数字有1、10、11、12,
1一共出现了五次
"""
class Solution:
def NumberOf1Between1AndN(self, n):
number = 0
for i in range(1, n+1):
number += self.NumberOf1(i)
return number
def NumberOf1(self, n):
number = 0
while n:
if n % 10 == 1:
number += 1
n //= 10
return number
def NumberOf1Between1andN2(self, n):
if n <= 0:
return 0
count = 0
base = 1
round = n
while round > 0:
weight = round % 10
round //= 10
count += (round * base)
if weight == 1:
count += (n % base) + 1
elif weight > 1:
count += base
base *= 10
return count
if __name__ == '__main__':
s = Solution()
print(s.NumberOf1Between1AndN(534))
print(s.NumberOf1Between1andN2(534))
剑指offer python版 43.1-n整数中1出现的次数
最新推荐文章于 2020-11-23 19:19:03 发布