日常练习:Lintcode 3. 统计数字 Python

题目:

计算数字k在0到n中的出现的次数,k可能是0~9的一个值

样例:

例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)

这里要注意的一点是,11这个数组算1出现了两次,这也是导致我出现了一次错误的点。

因为是整数所以不方便直接判断互相直接是否包含,于是直接把整数转化成字符串,用 in 判断是否包含,之后用python中字符串的count()函数来计算出现的次数,最后相加返回即可。

实际上我查到的是list的count()函数,没想到string也有。

下面上代码

class Solution:
    """
    @param: : An integer
    @param: : An integer
    @return: An integer denote the count of digit k in 1..n
    """

    def digitCounts(self, k, n):
        # write your code here
        count = 0
        for i in range(n+1):     
            if(str(k) in str(i)):
                count += str(i).count(str(k))
        return count

第一次没有注意,写的是

count += 1

这个就导致11没有加两次,很尴尬。

再改正之后没出现其他问题。

大概就这样了,感觉还应该多加练习。现在掌握的东西少,而且不熟练。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值