统计能整除数字的位数
原题
给你一个整数 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 <= 109
num
的数位中不含0
class Solution {
public int countDigits(int num) {
// 参与除法的运算数
int operand = num;
// 统计符合要求的个数
int count = 0;
while (operand != 0) {
// 如果能被最低位整除 count 加 1
if (num % (operand % 10) == 0) {
count += 1;
}
// 除去最低位
operand /= 10;
}
return count;
}
}
解题思路
- 使用循环逐位获取数字,并判断是否能整除,统计符合条件的数字个数。
- 获取最低位采用取模的方式,即得到除以10的余数。
代码示例
class Solution {
public int countDigits(int num) {
// 参与除法的运算数
int operand = num;
// 统计符合要求的个数
int count = 0;
while (operand != 0) {
// 如果能被最低位整除 count 加 1
if (num % (operand % 10) == 0) {
count += 1;
}
// 除去最低位
operand /= 10;
}
return count;
}
}