-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path728-SelfDividingNumbers.go
More file actions
52 lines (44 loc) · 1.44 KB
/
728-SelfDividingNumbers.go
File metadata and controls
52 lines (44 loc) · 1.44 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
package main
// 728. Self Dividing Numbers
// A self-dividing number is a number that is divisible by every digit it contains.
// For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
// A self-dividing number is not allowed to contain the digit zero.
// Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right].
// Example 1:
// Input: left = 1, right = 22
// Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
// Example 2:
// Input: left = 47, right = 85
// Output: [48,55,66,77]
// Constraints:
// 1 <= left <= right <= 10^4
import "fmt"
import "strconv"
func selfDividingNumbers(left int, right int) []int {
res := []int{}
for num := left; num <= right; num++ {
digits := strconv.Itoa(num)
flag := true
for i := range digits {
digit := int(digits[i] - '0')
if digit == 0 || num % digit != 0 { // 不能整除
flag = false
break
}
}
if flag {
res = append(res, num)
}
}
return res
}
func main() {
// Example 1:
// Input: left = 1, right = 22
// Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
fmt.Println(selfDividingNumbers(1, 22)) // [1,2,3,4,5,6,7,8,9,11,12,15,22]
// Example 2:
// Input: left = 47, right = 85
// Output: [48,55,66,77]
fmt.Println(selfDividingNumbers(47, 85)) // [48,55,66,77]
}