Problem Link

Description


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] (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