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;
}
}