如何计算一个数包含另一个数的次数?求中文清晰解答
计算一个数包含另一个数的次数:两种常见场景详解
嘿,别发愁!我懂之前看其他语言内容那种懵懵的感觉,现在用最直白的方式给你拆解这个问题——其实核心分两种常见场景,咱们一个个说清楚:
场景1:求大数里能完整容纳多少个小数(数值层面的包含)
这种情况就是咱们常说的「倍数统计」,比如问「10里有几个3」,本质是算10最多能被3整除几次,结果是3次(因为3×3=9≤10,剩下的1不够再装一个3)。
用整数除法就能直接解决,注意除数不能为0哦。举个Python的例子:
def count_as_multiple(dividend, divisor): if divisor == 0: raise ValueError("除数不能是0,会报错哒!") # 整除运算自动舍去余数,得到完整容纳的次数 return dividend // divisor # 测试一下 print(count_as_multiple(10, 3)) # 输出 3 print(count_as_multiple(100, 25)) # 输出 4 print(count_as_multiple(7, 2)) # 输出 3
场景2:数字的字符序列里包含目标数字的次数(字符串匹配)
如果是问「123123里有几个123」,或者「111里有几个11」,这时候要把数字当成字符串来处理——因为咱们要找的是连续的数字序列,甚至得考虑重叠的情况(比如111里的11,其实有2次:前两位和后两位)。
直接用字符串的count()方法只能处理非重叠的情况,所以更稳妥的是自己写个遍历逻辑:
def count_as_sequence(number, target): num_str = str(number) target_str = str(target) target_length = len(target_str) count = 0 # 遍历每个可能的起始位置,检查是否匹配目标序列 for i in range(len(num_str) - target_length + 1): if num_str[i:i+target_length] == target_str: count += 1 return count # 测试示例 print(count_as_sequence(123123, 123)) # 输出 2 print(count_as_sequence(111, 11)) # 输出 2 print(count_as_sequence(5678, 9)) # 输出 0
怎么选场景?
- 如果你想算的是「一个数是另一个数的几倍(取整)」,用场景1的整数除法;
- 如果你想找的是「数字里连续出现目标数字的次数」,用场景2的字符串遍历法。
内容的提问来源于stack exchange,提问作者d2wn
相关产品推荐
相关产品推荐

