Happy Number - Write an algorithm to determine if a number n is happy

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

Up next