diff --git "a/problems/0202.\345\277\253\344\271\220\346\225\260.md" "b/problems/0202.\345\277\253\344\271\220\346\225\260.md" index 02db507a16..43c9d753cd 100644 --- "a/problems/0202.\345\277\253\344\271\220\346\225\260.md" +++ "b/problems/0202.\345\277\253\344\271\220\346\225\260.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: