/* * @lc app=leetcode id=728 lang=rust * * [728] Self Dividing Numbers * * https://leetcode.com/problems/self-dividing-numbers/description/ * * algorithms * Easy (72.98%) * Total Accepted: 110.6K * Total Submissions: 151.6K * Testcase Example: '1\n22' * * * 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. * * Also, a self-dividing number is not allowed to contain the digit zero. * * Given a lower and upper number bound, output a list of every possible self * dividing number, including the bounds if possible. * * Example 1: * * Input: * left = 1, right = 22 * Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22] * * * * Note: * The boundaries of each input argument are 1 . * */ impl Solution { pub fn self_dividing_numbers(left: i32, right: i32) -> Vec { (left..right + 1).filter(|&n| { let mut m = n; while m != 0 { let d = m % 10; if d == 0 || n % d != 0 { return false; } m /= 10; } true }).collect() } } // pub structSolution;