此题关键在于遍历整数的每一位,判断每一位数是否为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;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/123880839
内容来源于网络,如有侵权,请联系作者删除!