Happy Number
Question:
Write an algorithm to determine if a number n
is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Return True if n
is a happy number, and False if not.
Example:
Input: 19
Output: true;
Explanation:
// 1^2 + 9^2 = 82
// 8^2 + 2^2 = 68
// 6^2 + 8^2 = 100
// 1^2 + 0^2 + 0^2 = 1
Solution
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function (n) {
if (!n) {
return false;
}
let set = new Set();
let sum = n;
while (!set.has(sum) && sum !== 1) {
set.add(sum);
sum = sumOfSquareOfDigits(sum);
}
return sum === 1;
};
const sumOfSquareOfDigits = (n) => {
n = n.toString().split("");
let sum = 0;
n.forEach((num) => {
sum += num * num;
});
return sum;
};
💌 If you’d like to receive more tutorials in your inbox, you can sign up for the newsletter here.
Discussions