From 59eff2e01b24169c168e96e685c0fd00c3be8ab9 Mon Sep 17 00:00:00 2001 From: Jerry-306 <82520819+Jerry-306@users.noreply.github.com> Date: Sat, 25 Sep 2021 09:27:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=200202=20=E5=BF=AB=E4=B9=90?= =?UTF-8?q?=E6=95=B0=20=20JavaScript=E7=89=88=E6=9C=AC=E4=BD=BF=E7=94=A8Se?= =?UTF-8?q?t()=20=E7=9A=84=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0202.快乐数.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/problems/0202.快乐数.md b/problems/0202.快乐数.md index 02db507a..43c9d753 100644 --- a/problems/0202.快乐数.md +++ b/problems/0202.快乐数.md @@ -191,6 +191,30 @@ var isHappy = function(n) { } return b === 1 || getN(b) === 1 ; }; + +// 方法三:使用Set()更简洁 +/** + * @param {number} n + * @return {boolean} + */ + +var getSum = function (n) { + let sum = 0; + while (n) { + sum += (n % 10) ** 2; + n = Math.floor(n/10); + } + return sum; +} +var isHappy = function(n) { + let set = new Set(); // Set() 里的数是惟一的 + // 如果在循环中某个值重复出现,说明此时陷入死循环,也就说明这个值不是快乐数 + while (n !== 1 && !set.has(n)) { + set.add(n); + n = getSum(n); + } + return n === 1; +}; ``` Swift: