当前位置: 首页 > news >正文

LeetCode 2269.找到一个数字的 K 美丽值:字符串数字转换(模拟)

【LetMeFly】2269.找到一个数字的 K 美丽值:字符串数字转换(模拟)

力扣题目链接:https://leetcode.cn/problems/find-the-k-beauty-of-a-number/

一个整数 num 的 美丽值定义为 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 。

 

提示:

  • 1 <= num <= 109
  • 1 <= k <= num.length (将 num 视为字符串)

解题方法:字符串数字转换

数据范围很小,直接按照题意将数字转为字符串和将字符串转为数字即可。

  • 时间复杂度 O ( l e n ( n u m ) × k ) O(len(num)\times k) O(len(num)×k)
  • 空间复杂度 O ( l e n ( n u m ) ) O(len(num)) O(len(num))

AC代码

C++
/*
 * @Author: LetMeFly
 * @Date: 2025-03-10 12:36:42
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-03-10 12:41:03
 */
class Solution {
public:
    int divisorSubstrings(int num, int k) {
        int ans = 0;
        string s = to_string(num);
        for (int i = 0; i + k <= s.size(); i++) {
            int thisNum = 0;
            for (int j = 0; j < k; j++) {
                thisNum = thisNum * 10 + s[i + j] - '0';
            }
            ans += thisNum && (num % thisNum == 0);
        }
        return ans;
    }
};
Python
'''
Author: LetMeFly
Date: 2025-03-10 12:43:11
LastEditors: LetMeFly.xyz
LastEditTime: 2025-03-10 12:44:22
'''
class Solution:
    def divisorSubstrings(self, num: int, k: int) -> int:
        s = str(num)
        ans = 0
        for i in range(len(s) - k + 1):
            thisNum = 0
            for j in range(k):
                thisNum = thisNum * 10 + ord(s[i + j]) - 48
            ans += thisNum and num % thisNum == 0
        return ans
Java
/*
 * @Author: LetMeFly
 * @Date: 2025-03-10 12:48:24
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-03-10 12:49:58
 */
class Solution {
    public int divisorSubstrings(int num, int k) {
        String s = String.valueOf(num);
        int ans = 0;
        for (int i = 0; i < s.length() - k + 1; i++) {
            int thisNum = Integer.parseInt(s.substring(i, i + k));
            if (thisNum > 0 && num % thisNum == 0) {
                ans++;
            }
        }
        return ans;
    }
}
Go
/*
 * @Author: LetMeFly
 * @Date: 2025-03-10 12:46:00
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-03-10 12:47:20
 */
package main

import "strconv"

func divisorSubstrings(num int, k int) (ans int) {
    s := strconv.Itoa(num)
    for i := 0; i < len(s) - k + 1; i++ {
        thisNum, _ := strconv.Atoi(s[i:i + k])
        if thisNum > 0 && num % thisNum == 0 {
            ans++
        }
    }
    return
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关文章:

  • postgresql json和jsonb问题记录
  • 多方安全计算(MPC)电子拍卖系统
  • c#中使用时间戳转换器
  • 在vs中无法用QtDesigner打开ui文件的解决方法
  • DeepSeek本地化部署与跨域访问架构构建
  • 基于langchain+llama2的本地私有大语言模型实战
  • 义乌购商品详情接口调用指南:Python实战代码与完整示例
  • 【算法】BST的非递归插入,删除,查询
  • 蓝桥杯[每日两题] 练习题:盛最多水的容器 三数之和(java版)
  • flutter的HTTP headers用法介绍
  • 【组件安装】Rocky 8.10 安装Local License Server 25.03.0 for Linux
  • Python基本语法——变量
  • Conda环境搭建实战指南:打造高效开发环境
  • DeepSeek开源Day2:DeepEP技术详解
  • Ae 效果详解:VR 降噪
  • tkinter上canvas展示图片报错(mac系统)
  • 【人工智能】随机森林的智慧:集成学习的理论与实践
  • Linux练级宝典->Linux进程概念介绍
  • ROS2学习笔记2
  • 使用Vue CLI从零搭建企业级项目实战(Vue3+全家桶)
  • 自媒体假扮官方蹭反间谍热度攫取利益,国安机关提醒
  • 郑钦文憾负高芙,止步WTA1000罗马站四强
  • 伊朗最高领袖顾问:伊朗愿承诺永不制造核武,换取美解除制裁
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • 俄乌拟在土耳其举行会谈,特朗普:我可能飞过去