自除数:
自除数 是指可以被它包含的每一位数整除的数。
例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。
给定两个整数 left 和 right ,返回一个列表列表的元素是范围 [left, right] 内所有的 自除数 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/self-dividing-numbers
public class SelfDividingNumbers {
public static List<Integer> selfDividingNumbers(int left,int right){
if (left>right){
return null;
}
List<Integer> res = new ArrayList<>();
for (int i = left; i < right+1; i++) {
if (isSelfDividingNumbers(i)) {
res.add(i);
}
}
return res;
}
//此处的48代表的ascll码值的差,也可用 ‘1’-‘0’ 实现,也相当于ascll码的49-48
private static boolean isSelfDividingNumbers(int i) {
String s = String.valueOf(i);
for (int j = 0; j < s.length(); j++) {
char a = s.charAt(j);
int c = Integer.valueOf(a);
if (c == 48){
return false;
}
if (i%(c-48) != 0){
return false;
}
}
return true;
}
public static void main(String[] args) {
List<Integer> r = selfDividingNumbers(1,22);
for (Integer integer : r) {
System.out.println(integer);
}
}
}