📌  相关文章
📜  给定范围内的整数计数,仅包含给定的一组数字(1)

📅  最后修改于: 2023-12-03 15:11:40.720000             🧑  作者: Mango

给定范围内的整数计数,仅包含给定的一组数字

如果需要在给定的一组数字内计算整数个数,可以使用以下的代码:

def count_numbers(start: int, end: int, numbers: List[int]) -> int:
    count = 0
    for i in range(start, end+1):
        if set(str(i)).issubset(set(str(x) for x in numbers)):
            count += 1
    return count

该函数的参数包括起始值start,终止值end和数字列表numbers。函数的返回值为满足条件的整数个数。

具体实现方法是,利用Python中的set类型来判定数字的每一位是否都在numbers中,即是否是numbers的子集。对于每一个整数i,转换成字符串str(i),再转换成set类型set(str(i)),然后判断其是否是进一步转换成set类型的numbers的子集set(str(x) for x in numbers)。

这样,我们便可以方便地计算出在给定数字列表中的范围内的整数个数了。

我们可以测试一下该函数:

assert count_numbers(1, 100, [1, 2, 3]) == 12
assert count_numbers(1, 100, [3, 4, 5]) == 0
assert count_numbers(100, 200, [3, 5, 7]) == 1

以上三个测试案例分别是:

  • 在1到100内包含数字1、2、3的整数个数为12个(1、2、3、10~13、20~23、30~33、41~43、51~53、61~63、71~73、81~83、91~93);
  • 在1到100内包含数字3、4、5的整数个数为0个;
  • 在100到200内包含数字3、5、7的整数个数为1个(157)。

除此之外,还可以将该函数进一步优化,比如使用生成器表达式、使用位运算等,以提高执行效率。