【LeetCode】第45天 - 728. 自除数

x33g5p2x  于2022-04-02 转载在 其他  
字(0.6k)|赞(0)|评价(0)|浏览(263)

题目描述

解题思路

此题关键在于遍历整数的每一位,判断每一位数是否为0,以及是否可以整除该整数。

提出以下方法遍历整数的每一位:
每次将当前整数对 10取余即可得到当前整数的最后一位,然后将整数除以 10。重复该操作,直到当前整数变成 0时即遍历了整数的每一位。

代码实现

class Solution {
    public List<Integer> selfDividingNumbers(int left, int right) {
        List<Integer> res = new ArrayList<Integer>();
        for(int i=left;i<=right;i++){   //遍历判断每一个数是不是自除数
            if(selfDividingNumber(i)){
                res.add(i);
            }
        }

        return res;
    }

    // 判断单个数是否是自除数,如果是,返回true;如果不是,返回false;
    public boolean selfDividingNumber(int num){
        int temp = num;
        while(num !=0){
            int s = num%10;   //取余得到最后一位数字
            if(s==0 || temp%s!=0){      //如果最后一位为0,或者不能被本身整除,返回false
                return false;
            }
            num = num/10;
        }
        return true;
    }
}

相关文章