力扣-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
相关推荐
不見星空18 分钟前
leetcode 每日一题 1865. 找出和为指定值的下标对
算法·leetcode
chao_7894 小时前
回溯题解——子集【LeetCode】二进制枚举法
开发语言·数据结构·python·算法·leetcode
GEEK零零七4 小时前
Leetcode 1070. 产品销售分析 III
sql·算法·leetcode
凌肖战4 小时前
力扣网编程274题:H指数之普通解法(中等)
算法·leetcode
Y1nhl7 小时前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
Swift社区10 小时前
Swift 解 LeetCode 320:一行单词有多少种缩写可能?用回溯找全解
开发语言·leetcode·swift
YuTaoShao20 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
百年孤独_1 天前
LeetCode 算法题解:链表与二叉树相关问题 打打卡
算法·leetcode·链表
算法_小学生1 天前
LeetCode 75. 颜色分类(荷兰国旗问题)
算法·leetcode·职场和发展
算法_小学生1 天前
LeetCode 287. 寻找重复数(不修改数组 + O(1) 空间)
数据结构·算法·leetcode