面试43题:
题目:1~n整数中1出现的次数
题:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1,10,11,12一共出现了5次。
解题思路一:直接累加1~n中每个整数中1出现的次数。
解题代码一:
# -*- coding:utf-8 -*- class Solution:def NumberOf1Between1AndN_Solution(self, n):# write code heretotalCount=0for i in range(1,n+1):totalCount+=self.NumberOf1Core(i)return totalCountdef NumberOf1Core(self,number):count=0while(number):if number%10==1:count+=1number=number//10return count
解题思路二:同上,只不过先把1~n中每个数字先转为其字符串形式,然后数一数其中“1”出现的次数。
解题代码:
# -*- coding:utf-8 -*- class Solution:def NumberOf1Between1AndN_Solution(self, n):# write code herecount=0for i in range(1,n+1):for j in str(i):if j=="1":count+=1return count
其他思路:待优化