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


我们来一步步理解这个问题。
给定一个整数 num 和一个整数 k,我们要找出 num 所有长度为 k 的子字符串,判断它们中有多少个可以整除 num 本身。需要注意几点:
-
子字符串可以有前缀 0。
-
但子字符串本身如果是 0,不能用来除(除数不能是 0)。
-
子字符串是连续的字符序列。
举个例子:
假设 num = 120,k = 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)
264

被折叠的 条评论
为什么被折叠?



