All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0701_0800.s0728_self_dividing_numbers.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0701_0800.s0728_self_dividing_numbers;

// #Easy #Math #2022_03_24_Time_1_ms_(100.00%)_Space_39.8_MB_(88.16%)

import java.util.ArrayList;
import java.util.List;

/**
 * 728 - Self Dividing Numbers\.
 *
 * Easy
 *
 * 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 <= 104
**/
public class Solution {
    public List selfDividingNumbers(final int left, final int right) {
        final List list = new ArrayList<>();
        for (int i = left; i <= right; i++) {
            if (isSelfDividing(i)) {
                list.add(i);
            }
        }
        return list;
    }

    private boolean isSelfDividing(int value) {
        final int origin = value;
        while (value != 0) {
            final int digit = value % 10;
            value /= 10;
            if (digit == 0 || origin % digit != 0) {
                return false;
            }
        }
        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy