解题思路:
分为三种情况考虑:1、数字本身是0,则不是自除数
2、数字本身只有一位,此时考虑正负的问题,即将数字取绝对值。只有一位数肯定是自除数。
3、正常情况。首先考虑,数字中包含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(isDivisor(i)){
res.add(i);
}
}
return res;
}
public Boolean isDivisor(int num){
int value=Math.abs(num);
if(value<10&&num!=0){
return true;
}
else if(num==0){
return false;
}
else{
int res=value;
while(value!=0){
int temp=value%10;
if(temp==0){
return false;
}
if(res%temp!=0){
return false;
}
value/=10;
}
return true;
}
}
}