一个整数 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 。
class Solution { public: int divisorSubstrings(int num, int k) { int ans=0; string s= to_string(num); for (int i = 0; i <=s.length()-k; ++i) { int tem= stoi(s.substr(i,k)); if(tem&&num%tem==0){ ans++; } } return ans; } };
- to_string(int num): 这个函数将整数 num 转换为其字符串表示形式。它用于将输入整数 num 转换为字符串 s。
- s.length(): 这个函数返回字符串 s 的长度。它用于确定字符串 s 的长度,以便在其子串中进行迭代。
- s.substr(i, k): 这个函数从字符串 s 中提取一个子串,从索引 i 开始,长度为 k。它用于从原始字符串 s 中提取长度为 k 的子串。
- stoi(string str): 这个函数将字符串 str 转换为其整数表示形式。它用于将从原始字符串 s 中提取的子串再转换为整数,以便进行进一步处理。