LeetCode 2520. 统计能整除数字的位数

【LetMeFly】2520.统计能整除数字的位数:模拟

力扣题目链接:https://leetcode.cn/problems/count-the-digits-that-divide-a-number/

给你一个整数 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

方法一:模拟

我们不断取出 n u m num num在十进制下的最低位,并判断这个最低位能否被 n u m num num整除。直到取完每一位为止。

  • 时间复杂度 O ( log ⁡ 10 n ) O(\log_{10} n) O(log10n)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:
    int countDigits(int num) {
        int n = num;
        int ans = 0;
        while (n) {
            ans += (num % (n % 10)) == 0;
            n /= 10;
        }
        return ans;
    }
};
Python
class Solution:
    def countDigits(self, num: int) -> int:
        n = num
        ans = 0
        while n:
            ans += (num % (n % 10)) == 0
            n //= 10
        return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/134050300

你可能感兴趣的:(题解,#,力扣LeetCode,leetcode,算法,题解,模拟)