Description
A self-dividing number is a number that is divisible by every digit it contains.
- For example,
128
is a self-dividing number because128 % 1 == 0
,128 % 2 == 0
, and128 % 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]
(both inclusive).
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 <= 104
Solution
Python3
class Solution:
def selfDividingNumbers(self, left: int, right: int) -> List[int]:
temp = []
check = True
for i in range(left,right+1):
if i <10:
temp.append(i)
elif "0" not in str(i):
for d in str(i):
if i%int(d) !=0:
print(i)
check = False
break
if check:
temp.append(i)
check = True
return temp
Python
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
ans = []
isSelfDividing = True
for i in range(left, right+1):
# single digit
if i < 10:
ans.append(i)
# check if not contains 0, aka mod 10 != 0
elif '0' not in str(i):
for d in str(i):
if i%int(d):
isSelfDividing = False
break
if isSelfDividing:
ans.append(i)
isSelfDividing = True
return ans