题解 | #整数中1出现的次数(从1到n整数中1出现的次数)#
整数中1出现的次数(从1到n整数中1出现的次数)
http://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6
1.找位数
2,看是从后面还是从前面找1
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1Between1AndN_Solution(self, n):
# write code here
result = 0
for i in range(1, n+1):
i_tmp=i #给个临时i,其实没啥用
shang= 0 #重新赋值,以免下次循环出错
yu_shu= 0 #重新赋值,以免下次循环出错
#求n的位数,其实就是每次除以10,看能除几次
tmp = i_tmp//10 ##地板除
max_10 = 0 #重新赋值,以免下次循环出错
max_10 += 1 #如果i是个位数,直接得出i的位数.如果不是,则在下面的while中重新赋值
while tmp: #当i/tmp的十位上不为0时循环
max_10 += 1 #i是几位数,max_10就是几
tmp = tmp//10
while max_10: #max_10是几,i就是几位数,就循环几次
shang=i_tmp//(10**(max_10-1))
yu_shu =i_tmp%(10**(max_10-1))
i_tmp=yu_shu
max_10 -= 1
if shang == 1:
result +=1
return resulti_tmp=11...........商....余数
11/10 ............... 1......1..........余数给i_tmp
1/1 ....................1......0..........循环结束
查看15道真题和解析
