JZ31 整数中1出现的次数(从1到n整数中1出现的次数)
my version1
不考虑时间复杂度,判断每个数字中1的个数
class Solution:
def is_with_1(self, n):
count = 0
while n:
if n % 10 == 1:
count += 1
n = n // 10
return count
def NumberOf1Between1AndN_Solution(self, n):
count = 0
for i in range(1, n+1):
count += self.is_with_1(i)
return count
my version2
找规律
未通过所有样例,无法处理带0的情况
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1Between1AndN_Solution(self, n):
if n == 0:
return 0
if 0 < n < 10:
return 1
count = 1
gewei = n % 10
n = n // 10
weishu = 10
while n:
cur = n % 10
if cur > 1:
count += weishu
if cur == 1:
count += (gewei+1)
if gewei > 1:
count += cur
n = n // 10
weishu *= 10
return count
book method
找规律
(未完待续)