python统计数字个数_python:统计数字个数
领扣第3题:计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。#方法一:笨办法,非常浪费时间和内存,但一定可以得到正确答案class Solution:"""@param k: An integer@param n: An integer@return: An integer denote the count of digit k in 1..n"""def digitC
领扣第3题:计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。
#方法一:笨办法,非常浪费时间和内存,但一定可以得到正确答案
class Solution:
"""
@param k: An integer
@param n: An integer
@return: An integer denote the count of digit k in 1..n
"""
def digitCounts(self, k, n):
# write your code here
total = 0
key = str(k)
for value in range(n+1):
st = str(value)
total = total + st.count(key)
return total
#方法二:利用数学规律,但比较麻烦(由于比较麻烦,k=0的情况未做解答)
def digitCounts(k, n):
if k == 0:
pass
if k != 0:
base = 10
count = 0
if n % 10 >= k and n > 10:
count = count + 1
value = n
while value:
#该循环逻辑是用来判断n的最高位大小
if value < 10 and value == k:
t = n - k * base // 10 + 1
count = count + t
return count
elif k < value < 10:
count = base // 10 + count
return count
elif value < k:
return count
if base == 10:
value = n // base
count = count + value
base = base * 10
continue
if value % 10 > k:
count = count + (value//10 + 1)*base//10
elif value % 10 == k:
t = n % (base // 10)+1
count = count + value // 10 * base // 10 + t
else:
count = count + value//10*base//10
value = n // base
base *= 10
return count
更多推荐
所有评论(0)