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

文章目录

力扣题目

一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目:

子字符串长度为 k 。

子字符串能整除 num 。

给你整数 num 和 k ,请你返回 num 的 k 美丽值。

注意:

允许有 前缀 0 。

0 不能整除任何值。

一个 子字符串 是一个字符串里的连续一段字符序列。

示例 1:

输入:num = 240, k = 2

输出:2

解释:以下是 num 里长度为 k 的子字符串:

  • "240" 中的 "24" :24 能整除 240 。
  • "240" 中的 "40" :40 能整除 240 。
    所以,k 美丽值为 2 。
    示例 2:

输入:num = 430043, k = 2

输出:2

解释:以下是 num 里长度为 k 的子字符串:

  • "430043" 中的 "43" :43 能整除 430043 。
  • "430043" 中的 "30" :30 不能整除 430043 。
  • "430043" 中的 "00" :0 不能整除 430043 。
  • "430043" 中的 "04" :4 不能整除 430043 。
  • "430043" 中的 "43" :43 能整除 430043 。
    所以,k 美丽值为 2 。

代码工程

C++实现

cpp 复制代码
class Solution {
public:
    int divisorSubstrings(int num, int k) 
    {
        int res = 0;
        string s = to_string(num);/*将十进制数字转化为字符串*/
        /*s.length() - k + 1是确保s.substr(i, k)能正好取到字符串结尾*/
        for(int i = 0; i < s.length() - k + 1; i++)
        {
            int tmp = stoi(s.substr(i, k));
            if((tmp != 0) && (num % tmp == 0))
            {
                res++;
            }
        }

        return res;
    }   
};

python实现

cpp 复制代码
class Solution:
    def divisorSubstrings(self, num: int, k: int) -> int:
        my_str = str(num)
        n = len(my_str)
        res = 0
        for i in range(n - k + 1):
            tmp = int(my_str[i:i+k])
            if tmp != 0 and num % tmp == 0:
                res += 1 
        
        return res
相关推荐
漫随流水4 分钟前
leetcode算法(145.二叉树的后序遍历)
数据结构·算法·leetcode·二叉树
漫随流水17 分钟前
leetcode算法(94.二叉树的中序遍历)
数据结构·算法·leetcode·二叉树
菜鸟233号3 小时前
力扣343 整数拆分 java实现
java·数据结构·算法·leetcode
茶猫_3 小时前
C++学习记录-旧题新做-链表求和
数据结构·c++·学习·算法·leetcode·链表
源代码•宸3 小时前
Leetcode—1161. 最大层内元素和【中等】
经验分享·算法·leetcode·golang
努力学算法的蒟蒻4 小时前
day55(1.6)——leetcode面试经典150
算法·leetcode·面试
老鼠只爱大米5 小时前
LeetCode算法题详解 1:两数之和
算法·leetcode·面试题·两数之和·two sum
2501_941822755 小时前
从限流降载到全链路流控的互联网工程语法实践与多语言探索
leetcode·模拟退火算法
炽烈小老头5 小时前
【每天学习一点算法 2026/01/06】最小栈
学习·算法·leetcode
六毛的毛6 小时前
填充每个节点的下一个右侧节点指针
leetcode