LeetCode in Kotlin

728. Self Dividing Numbers

Easy

A self-dividing number is a number that is divisible by every digit it contains.

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:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    fun selfDividingNumbers(left: Int, right: Int): List<Int> {
        val list: MutableList<Int> = ArrayList()
        for (i in left..right) {
            if (isSelfDividing(i)) {
                list.add(i)
            }
        }
        return list
    }

    private fun isSelfDividing(value: Int): Boolean {
        var value = value
        val origin = value
        while (value != 0) {
            val digit = value % 10
            value /= 10
            if (digit == 0 || origin % digit != 0) {
                return false
            }
        }
        return true
    }
}