剑指offer 面试43题

Posted yanmk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 面试43题相关的知识,希望对你有一定的参考价值。

面试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 here
        totalCount=0
        for i in range(1,n+1):
            totalCount+=self.NumberOf1Core(i)
        return totalCount
    
    def NumberOf1Core(self,number):
        count=0
        while(number):
            if number%10==1:
                count+=1
            number=number//10
        return count

解题思路二:同上,只不过先把1~n中每个数字先转为其字符串形式,然后数一数其中“1”出现的次数。

解题代码:

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # write code here
        count=0
        for i in range(1,n+1):
            for j in str(i):
                if j=="1":
                    count+=1
        return count

 其他思路:待优化

 

以上是关于剑指offer 面试43题的主要内容,如果未能解决你的问题,请参考以下文章

[剑指offer]面试题48:不能被继承的类

[剑指offer]面试题47:不用加减乘除做加法

[剑指offer]面试题26:复杂链表的复制

剑指offer-面试题43-1~n整数中1出现的次数-归纳法

剑指Offer面试题43(Java版):n个骰子的点数

剑指Offer - 面试题64:求1+2+...+n