diff --git a/python/202_happy_number.py b/python/202_happy_number.py new file mode 100644 index 0000000..cba6475 --- /dev/null +++ b/python/202_happy_number.py @@ -0,0 +1,16 @@ +class Solution: + def isHappy(self, n: int) -> bool: + seen = {n} + while True: + n = self.square_digital_sum(n) + if n in seen: + return n == 1 + seen.add(n) + + @staticmethod + def square_digital_sum(n: int) -> int: + total = 0 + while n > 0: + n, digit = divmod(n, 10) + total += digit**2 + return total