Title:Self Dividing Numbers 728
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/self-dividing-numbers/
1. 见代码
时间复杂度:O(n),一次一层for循环,循环最长为n。
空间复杂度:O(n),数字的长度,最长为5(10000)。
/**
* 调用dividingNumbers方法
* @param left
* @param right
* @return
*/
public static List<Integer> selfDividingNumbers(int left, int right) {
List<Integer> list = new ArrayList<>();
for (int i = left; i <= right; i++) {
if (dividingNumbers(i)) {
list.add(i);
}
}
return list;
}
/**
* 将数字转换成字符数组,依次判断,注意某个数字中含有0
* @param n
* @return
*/
private static boolean dividingNumbers(int n) {
String s = n + "";
boolean flag = true;
for (int num : s.toCharArray()) {
int tmp = num - 48;
if (tmp == 0) {
flag = false;
break;
}
else if (n % (num - 48) != 0) {
flag = false;
break;
}
}
return flag;
}