题解:
- 定义一个函数 get_sum(n),用于计算 n 的每一位数字的平方和。
- 初始化一个集合 visited,用于记录已经出现过的数字。
- 循环计算 n 的每一位数字的平方和,直到 n 等于 1 或者出现重复的数字为止。
- 如果 n 等于 1,则返回 True,表示 n 是快乐数;否则返回 False,表示 n 不是快乐数。
class Solution:
def isHappy(self, n: int) -> bool:
def get_sum(n):
total = 0
while n > 0:
n, digit = divmod(n, 10)
total += digit ** 2
return total
visit = set()
while n != 1 and n not in visit:
visit.add(n)
n = get_sum(n)
return n == 1