1st solution, using set(), easy to understand

```
def isHappy(self, n):
happyset = set()
while n > 1 and n not in happyset:
happyset.add(n)
n = sum(map(lambda x: int(x) ** 2, list(str(n))))
return n == 1
```

2nd solution, if n is not happy, it always falls into a cycle: 4, 16, 37, 58, 89, 145, 42, 20, 4, ..., that's math :). check https://en.wikipedia.org/wiki/Happy_number

```
def isHappy(self, n):
if n == 1:
return True
elif n == 4: # or any other number in the cycle, pick 42 if you like it, "42 is the answer"
return False
else:
return self.isHappy(sum(map(lambda x: int(x) ** 2, list(str(n)))))
```

Just one more minor comment about the running time: 72 ms for the 1st and 65 ms for the 2nd solution. I wrote another code with a helper function to calculate sum(map(lambda x: int(x) ** 2, list(str(n)))) in the 1st solution, and it only costs 42ms. It's ugly and long but it's faster.