2520. 统计能整除数字的位数
给你一个整数 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
原站题解
python3 解法, 执行用时: 44 ms, 内存消耗: 16.1 MB, 提交时间: 2023-10-26 07:30:47
class Solution: def countDigits(self, num: int) -> int: return sum(num%i == 0 for i in map(int, str(num)))
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-10-26 07:30:09
impl Solution { pub fn count_digits(num: i32) -> i32 { num.to_string().chars().map(|c| c.to_digit(10).unwrap() as i32) .filter(|&d| num % d == 0).count() as i32 } }
javascript 解法, 执行用时: 64 ms, 内存消耗: 40.8 MB, 提交时间: 2023-10-26 07:29:46
/** * @param {number} num * @return {number} */ var countDigits = function(num) { let t = num; let res = 0; while (t) { if (num % (t % 10) == 0) { res += 1; } t = Math.floor(t / 10); } return res; };
cpp 解法, 执行用时: 0 ms, 内存消耗: 6.2 MB, 提交时间: 2023-10-26 07:29:07
class Solution { public: int countDigits(int num) { int ans = 0, x = num; while ( x != 0 ) { if ( num % (x % 10) == 0 ) ans++; x /= 10; } return ans; } };
java 解法, 执行用时: 0 ms, 内存消耗: 38.2 MB, 提交时间: 2023-10-26 07:28:41
class Solution { public int countDigits(int num) { int ans = 0, x = num; while ( x != 0 ) { if ( num % (x % 10) == 0 ) ans++; x /= 10; } return ans; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-01-03 11:43:33
func countDigits(num int) (ans int) { for x := num; x > 0; x /= 10 { if num%(x%10) == 0 { ans++ } } return }
python3 解法, 执行用时: 32 ms, 内存消耗: 15 MB, 提交时间: 2023-01-03 11:43:19
class Solution: def countDigits(self, num: int) -> int: ans, x = 0, num while x: ans += num % (x % 10) == 0 x //= 10 return ans
python3 解法, 执行用时: 36 ms, 内存消耗: 14.9 MB, 提交时间: 2023-01-03 11:42:26
class Solution: def countDigits(self, num: int) -> int: ans = 0 for d in str(num): if num % int(d) == 0: ans += 1 return ans