python-leetcode-2269. 找到一个数字的 K 美丽值

2269. 找到一个数字的 K 美丽值 - 力扣(LeetCode)

我们来一步步理解这个问题。

给定一个整数 num 和一个整数 k,我们要找出 num 所有长度为 k子字符串,判断它们中有多少个可以整除 num 本身。需要注意几点:

  • 子字符串可以有前缀 0。

  • 但子字符串本身如果是 0,不能用来除(除数不能是 0)。

  • 子字符串是连续的字符序列。


举个例子:

假设 num = 120k = 2
num 转成字符串是 "120",它的长度为 3,可以得到以下长度为 2 的子字符串:

  • "12" → 12 可以整除 120 → ✅

  • "20" → 20 可以整除 120 → ✅

所以答案是 2


解法(Python 实现):

def divisorSubstrings(num: int, k: int) -> int:
    num_str = str(num)
    count = 0
    
    for i in range(len(num_str) - k + 1):
        sub_str = num_str[i:i+k]
        sub_num = int(sub_str)
        
        if sub_num != 0 and num % sub_num == 0:
            count += 1

    return count

用法:

print(divisorSubstrings(120, 2))  # 输出 2
print(divisorSubstrings(430043, 2))  # 输出 2 (子串为 43、30、00、04、43)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值