class Solution {
public:
bool isFascinating(int n) {
}
};
6461. 判断一个数是否迷人
给你一个三位数整数 n
。
如果经过以下修改得到的数字 恰好 包含数字 1
到 9
各一次且不包含任何 0
,那么我们称数字 n
是 迷人的 :
n
与数字 2 * n
和 3 * n
连接 。如果 n
是迷人的,返回 true
,否则返回 false
。
连接 两个数字表示把它们首尾相接连在一起。比方说 121
和 371
连接得到 121371
。
示例 1:
输入:n = 192 输出:true 解释:我们将数字 n = 192 ,2 * n = 384 和 3 * n = 576 连接,得到 192384576 。这个数字包含 1 到 9 恰好各一次。
示例 2:
输入:n = 100 输出:false 解释:我们将数字 n = 100 ,2 * n = 200 和 3 * n = 300 连接,得到 100200300 。这个数字不符合上述条件。
提示:
100 <= n <= 999
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2023-06-11 09:00:45
func isFascinating(n int) bool { return n == 192 || n == 219 || n == 273 || n == 327 }
java 解法, 执行用时: 10 ms, 内存消耗: 39.7 MB, 提交时间: 2023-06-11 08:59:13
class Solution { public boolean isFascinating(int n) { int n2 = n * 2; int n3 = n * 3; String v = String.valueOf(n) + String.valueOf(n2) + String.valueOf(n3); Set<Character> set = new HashSet<>(); for(int i = 0;i< v.length();i++){ if(v.charAt(i)== '0') return false; if(set.contains(v.charAt(i))) return false; set.add(v.charAt(i)); } return true; } }
cpp 解法, 执行用时: 0 ms, 内存消耗: 5.9 MB, 提交时间: 2023-06-11 08:58:43
class Solution { public: bool isFascinating(int n) { if(n < 100 || n > 999) { // 判断n是否超出范围(非必须) return false; } int n2 = n * 2, n3 = n * 3; // 计算n * 2和n * 3 bool status[10] = {false}; // 各数字出现状态 int count = 0; // 结果共有的数字种类数 // 算法核心,检查是否出现0,并更新状态表status和种类数count auto check = [](int n, bool *status, int *count) { int x = 0; while(n > 0) { x = n % 10; // 取出一位数 // 出现0,直接返回false if(x == 0) { return false; } // 检查数字是否重复出现 if(*(status + x) == true) { return false; } // 更新状态表和种类数 *(status + x) = true; (*count) ++; // 去除最后一位 n /= 10; } return true; }; // 对三个变量进行检查 if(!check(n, status, &count) || !check(n2, status, &count) || !check(n3, status, &count)) { return false; } // 判断种类数是否为9(即是否1~9是否都出现)并返回结果 return count == 9; } };
c 解法, 执行用时: 0 ms, 内存消耗: 5.6 MB, 提交时间: 2023-06-11 08:58:19
bool isFascinating(int n){ if(n*2 >= 1000 || n*3 >= 1000) return false; //如过n*2 或者 n*3 是个四位数了 那么一定有重复的 int k = n*1000000 + n*2*1000 + n*3; //构造迷人数 int a[10]={0}; //存储1-9 数字的个数 while(k){ a[k%10]++; k/=10; } for(int i = 1 ; i < 10 ; i++) if(a[i] != 1) //如果没有出现或者多出现一次就不是迷人数 return false; return true; }
python3 解法, 执行用时: 44 ms, 内存消耗: 16.1 MB, 提交时间: 2023-06-11 08:57:55
class Solution(object): def isFascinating(self, n): s=str(n)+str(2*n)+str(3*n) if n<=333 and len(set(s))==9 and "0" not in s: return True else: return False
python3 解法, 执行用时: 48 ms, 内存消耗: 16.1 MB, 提交时间: 2023-06-11 08:57:04
class Solution(object): def isFascinating(self, n): return n in (192, 219, 273, 327)
python3 解法, 执行用时: 52 ms, 内存消耗: 16.1 MB, 提交时间: 2023-06-11 08:56:45
class Solution(object): def isFascinating(self, n): return ''.join(sorted(str(n) + str(2 * n) + str(3 * n))) == "123456789"