Happy Number

Encontrar si un número es “feliz”, es decir, si se suman los cuadrados de los dígitos repetidamente, en algún punto nos da 1.

Solución

class Solution(object):
   def isHappy(self, n):
       """
       :type n: int
       :rtype: bool
       """
       s = set()
       while True:
           new_n = 0
           while n > 0:
               d = n % 10
               cuadrado = d * d
               new_n += cuadrado
               n  = n//10
           if new_n == 1:
               return True
           if new_n in s:
               return False
           n = new_n
           s.add(new_n)

Este problema guarda los números en un set, por lo que si ya está un número en la lista, entonces se encontró un bucle y el número no es feliz.