日常练习:lintcode 3. 统计数字

这个是中等题目..我感觉我比上一个那个简单题目要简单一点…

题目:计算数字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没有加两次,很尴尬。

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

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

你可能感兴趣的:(lintcode)