最后更新于6年前
观察可知,一旦出现重复数字,则进入循环。将所有第一次出现的数存入一个set,一直计算直到出现set中存在的数为止。过程中出现1则返回true
class Solution: def isHappy(self, n: int) -> bool: s = set() while n not in s: #若出现1就返回true if n == 1: return True s.add(n) #计算快乐数 sum = 0 while n > 0: digit = n % 10 n //= 10 sum += digit ** 2 n = sum #更新 return False