-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSelfDivisor.java
62 lines (38 loc) · 1.22 KB
/
SelfDivisor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package swordPointOffer;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: Wenhang Chen
* @Description:自除数 是指可以被它包含的每一位数除尽的数。 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
* <p>
* 还有,自除数不允许包含 0 。
* <p>
* 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。
* <p>
* 示例 1:
* <p>
* 输入:
* 上边界left = 1, 下边界right = 22
* 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
* 注意:
* <p>
* 每个输入参数的边界满足 1 <= left <= right <= 10000。
* @Date: Created in 23:13 5/3/2020
* @Modified by:
*/
public class SelfDivisor {
public List<Integer> selfDividingNumbers(int left, int right) {
List<Integer> ans = new ArrayList<>();
for (int n = left; n <= right; ++n) {
if (selfDividing(n)) ans.add(n);
}
return ans;
}
public boolean selfDividing(int n) {
for (char c: String.valueOf(n).toCharArray()) {
if (c == '0' || (n % (c - '0') > 0))
return false;
}
return true;
}
}