15 Jun 2024C++ / Python / TypeScriptEasy

Happy Number

Collected C++, Python, TypeScript solutions for happy number. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Happy Number. the solution files are available below.

solution files

  • C++ happy-number/synced-solution.cpp
  • Python happy-number/synced-solution.py
  • TypeScript happy-number/synced-solution.ts

Solution files

Pythonhappy-number/synced-solution.py
def isHappy(n: int) -> bool:
    def get_next(number):
        total_sum = class="syntax-number">0
        while number > class="syntax-number">0:
            digit = number % class="syntax-number">10
            total_sum += digit * digit
            number class=class="syntax-string">"syntax-comment">//= class="syntax-number">10
        return total_sum

    seen = set()
    while n != class="syntax-number">1 and n not in seen:
        seen.add(n)
        n = get_next(n)
    return n == class="syntax-number">1
C++happy-number/synced-solution.cpp
class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> seen;
        while (n != class="syntax-number">1 && seen.find(n) == seen.end()) {
            seen.insert(n);
            n = getNext(n);
        }
        return n == class="syntax-number">1;
    }

private:
    int getNext(int n) {
        int totalSum = class="syntax-number">0;
        while (n > class="syntax-number">0) {
            int digit = n % class="syntax-number">10;
            totalSum += digit * digit;
            n /= class="syntax-number">10;
        }
        return totalSum;
    }
};
TypeScripthappy-number/synced-solution.ts
function isHappy(n: number): boolean {
    const getNext = (num: number): number => {
        let totalSum = class="syntax-number">0;
        while (num > class="syntax-number">0) {
            const digit = num % class="syntax-number">10;
            totalSum += digit * digit;
            num = Math.floor(num / class="syntax-number">10);
        }
        return totalSum;
    };

    const seen = new Set<number>();
    while (n !== class="syntax-number">1 && !seen.has(n)) {
        seen.add(n);
        n = getNext(n);
    }
    return n === class="syntax-number">1;
}