2520. 统计能整除数字的位数
难度: 简单
来源: 每日一题 2023.10.26
给你一个整数 num
,返回 num
中能整除 num
的数位的数目。
如果满足 nums % val == 0
,则认为整数 val
可以整除 nums
。
示例 1:
输入:num = 7
输出:1
解释:7 被自己整除,因此答案是 1 。
示例 2:
输入:num = 121
输出:2
解释:121 可以被 1 整除,但无法被 2 整除。由于 1 出现两次,所以返回 2 。
示例 3:
输入:num = 1248
输出:4
解释:1248 可以被它每一位上的数字整除,因此答案是 4 。
提示:
-
1 <= num <= 10^9
-
num
的数位中不含0
class Solution {
public int countDigits(int num) {
}
}
分析与题解
-
暴力模拟法
这个题目其实非常的简单, 根本没有任何套路, 但是要注意一点, 不要截取字符串再然后判断, 因为字符串和数字的转换过程中非常消耗资源, 我们就只能通过取余的方式来获取到每一个数位, 进而求出该数位是否符合题意.
int nowNum = tempNum % 10;
整体逻辑代码如下所示.
class Solution { public int countDigits(int num) { int tempNum = num; int count = 0; while(tempNum != 0) { int nowNum = tempNum % 10; if (num % nowNum == 0) { count++; } tempNum = tempNum/10; } return count; } }
复杂度分析:
- 时间复杂度: O(n), 与数字长度相关的时间复杂度.
- 空间复杂度: O(1), 常量级别的空间复杂度.
结果如下所示.