力扣-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
相关推荐
阿Y加油吧27 分钟前
力扣打卡——day01
java·算法·leetcode
Tisfy1 小时前
LeetCode 1727.重新排列后的最大子矩阵:枚举矩形底边是哪一行 + 排序
算法·leetcode·矩阵
_饭团2 小时前
指针核心知识:5篇系统梳理2
c语言·笔记·学习·leetcode·面试·改行学it
阿Y加油吧2 小时前
力扣打卡——盛最多水的容器、三数之和
算法·leetcode·排序算法
玛卡巴卡ldf3 小时前
【LeetCode 手撕算法】(子串) 560-和为 K 的子数组
java·数据结构·算法·leetcode
喵喵蒻葉睦5 小时前
力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解
java·数据结构·算法·leetcode·双端队列·滑动窗口·队列
样例过了就是过了5 小时前
LeetCode热题100 搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
x_xbx6 小时前
LeetCode:21. 合并两个有序链表
算法·leetcode·链表
啊哦呃咦唔鱼6 小时前
LeetCode hot100-239 滑动窗口最大值
数据结构·算法·leetcode
一叶落4387 小时前
LeetCode 134. 加油站(贪心算法详解 + C语言实现)
c语言·数据结构·算法·leetcode·贪心算法