解题思路:
- 模拟:从left到right遍历每一个数字,每次用while循环取每一位的数字,分别区域,若其中有一个取余不为0,则return false。
代码:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> ans;
for (int i = left; i <= right; ++i) {
int temp = i, judge = 1;
while (judge && temp != 0) {
int t = temp % 10;
if (t == 0 || i % t != 0) { // 若某一位的数字是0,则直接进入,保证取余的数字不为0
judge = 0;
}
temp /= 10;
}
if (judge == 1) {
ans.emplace_back(i);
}
}
return ans;
}
};