题目链接
分析
遍历每一个长度为 $k$ 的子字符串计算即可
可以使用 $10^k$ 来作为模数取出长度为 $k$ 的子字符串
代码实现
class Solution {
public:
int divisorSubstrings(int num, int k) {
if(num == 1e9) // 特判不用写long long
return 1;
int ans = 0;
int mod = pow(10, k);
for(int i = num; i >= mod / 10; i /= 10) {
int t = i % mod;
if(t > 0 && !(num % t))
ans++;
}
return ans;
}
};
复杂度分析
- 时间复杂度:$O(n)$,$n$ 为 $num$ 的位数
- 空间复杂度:$O(1)$