判断一个数是否迷人

131 阅读2分钟

🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,所以让我们一起来养成算法练习的习惯。今天练习的题目是一道比较简单的题目 ->判断一个数是否迷人

问题描述

给你一个三位数整数 n 。

如果经过以下修改得到的数字 恰好 包含数字 1 到 9 各一次且不包含任何 0 ,那么我们称数字 n 是 迷人的 :

  • 将 n 与数字 2 * n 和 3 * n 连接 。

如果 n 是迷人的,返回 true,否则返回 false 。

连接 两个数字表示把它们首尾相接连在一起。比方说 121 和 371 连接得到 121371 。

示例 1:

输入: n = 192
输出: true
解释: 我们将数字 n = 1922 * n = 3843 * n = 576 连接,得到 192384576 。这个数字包含 19 恰好各一次。

示例 2:

输入: n = 100
输出: false
解释: 我们将数字 n = 1002 * n = 2003 * n = 300 连接,得到 100200300 。这个数字不符合上述条件。

提示:

  • 100 <= n <= 999

思路分析

首先我们应该要先理解一下题目意思,题目会给我们一个三位数整数 n ,我们需要对n进行以下操作,将 n 与数字 2 * n 和 3 * n 连接,我们需要判断修改后的数字是不是一个迷人的数字,这里迷人的数字的定义是:数字 恰好 包含数字 1 到 9 各一次且不包含任何 0。这是一道比较简单的题目,我们只需要跟着题目描述进行模拟操作即可:

  • 将 n 与数字 2 * n 和 3 * n 连接

直接按题目描述计算2 * n3 * n并将其与 n作为字符串连接起来,具体代码如下:

const res = n + '' + n * 2 + n * 3;
  • 判断是否为迷人的数字

迷人的数字是恰好 包含数字 1 到 9 各一次且不包含任何 0的数字,所以我们需要判断得到的字符串中是否恰好 包含数字 1 到 9 各一次且不包含任何 0,我们可以先将连接得到的字符串进行排序,迷人的数字排完序之后应该为123456789,所以我们可以先对得到的字符串进行排序,判断排完序的字符串是不是为123456789即可,具体代码如下:

return res.split('').sort().join('') == '123456789'

AC 代码

完整 AC 代码如下:

/**
 * @param {number} n
 * @return {boolean}
 */
var isFascinating = function(n) {
    const res = n + '' + n * 2 + n * 3;
    return res.split('').sort().join('') == '123456789';
};

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,在此谢谢大家的支持,我们下文再见 🙌。