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

尝试做法:

import java.util.Vector;

class Solution {
    public int countDigits(int num) {
        Vector vec = new Vector<>();
        int ans = 0, n = num;
        while(n > 0){
            vec.add(n % 10);
            n /= 10;
        }
        for(int i = 0; i < vec.size(); ++i){
            if(num % vec.get(i) == 0){
                ++ans;
            }
        }

        return ans;
    }
}

刚开始看错题目了,以为是从1开始到num计算公因子,结果写完了充满疑惑。。。

看评论发现这个做法:

class Solution {
    public int countDigits(int num) {
        int n = num, ans = 0;
        while (num != 0) {
            ans += n % (num % 10) == 0 ? 1 : 0;
            num /= 10;
        }
        return ans;
    }
}

作者:宫水三叶
链接:https://leetcode.cn/problems/count-the-digits-that-divide-a-number/solutions/2498966/gong-shui-san-xie-jian-dan-mo-ni-ti-shi-0ad2c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

边处理位数边进行判断,时间和空间复杂度最优。

你可能感兴趣的:(力扣刷题记录,算法,数据结构,leetcode)