目录

Leetcode-每日一题2269.-找到一个数字的-K-美丽值

【Leetcode 每日一题】2269. 找到一个数字的 K 美丽值

一个整数

n u m num

n

u

m 的

k k

k 美丽值定义为

n u m num

n

u

m 中符合以下条件的 子字符串 数目:

  • 子字符串长度为

    k k

    k 。

  • 子字符串能整除

    n u m num

    n

    u

    m 。

给你整数

n u m num

n

u

m 和

k k

k ,请你返回

n u m num

n

u

m 的

k k

k 美丽值。

注意:

  • 允许有 前缀

    0 0

    0 。

  • 0 0

    0 不能整除任何值。

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

  • 1 ≤ n u m ≤ 109 1 \le num \le 109

    1

    n

    u

    m

    109

  • 1 ≤ k ≤ n u m . l e n g t h 1 \le k \le num.length

    1

    k

    n

    u

    m

    .

    l

    e

    n

    g

    t

    h

按题目要求统计有多少字串能够被整除即可,需要注意一下的是完全把

n u m num

n

u

m 当成数字也可以做,从低位到高位用模运算和除法不断地获取当前的数字就可以了。

class Solution {
    public int divisorSubstrings(int num, int k) {
        String str = String.valueOf(num);
        int res = 0;
        for (int i = 0; i + k <= str.length(); i++) {
            int cur = Integer.parseInt(str.substring(i, i + k));
            if (cur != 0 && num % cur == 0) {
                res++;
            }
        }
        return res;
    }
}