Description
Given an integer num, return the number of digits in num that divide num.
An integer val divides nums if nums % val == 0.
Example 1:
Input: num = 7 Output: 1 Explanation: 7 divides itself, hence the answer is 1.
Example 2:
Input: num = 121 Output: 2 Explanation: 121 is divisible by 1, but not 2. Since 1 occurs twice as a digit, we return 2.
Example 3:
Input: num = 1248 Output: 4 Explanation: 1248 is divisible by all of its digits, hence the answer is 4.
Constraints:
1 <= num <= 109numdoes not contain0as one of its digits.
Solutions
Solution 1: Enumeration
We directly enumerate each digit val of the integer num, and if val can divide num, we add one to the answer.
After the enumeration, we return the answer.
The time complexity is O(log num), and the space complexity is O(1).
PythonJavaC++GoTypeScriptRustC
class Solution: def countDigits(self, num: int) -> int: ans, x = 0, num while x: x, val = divmod(x, 10) ans += num % val == 0 return ans(code-box)
Solution 2
TypeScriptRust
function countDigits(num: number): number { let ans = 0; for (const s of num.toString()) { if (num % Number(s) === 0) { ans++; } } return ans; }(code-box)
