题目链接:https://leetcode.cn/problems/happy-number/description/
方法:哈希法-set()
解题思路:
拆解并拿到每个数字的平方,
平方后相加得到的数字 再次进行拆解
把每次相加得到的数字进行判断,如果如果出现过,就直接返回 False 证明不是快乐数,否则就添加到集合里面
如果拆解不了(结束条件:数字为 1),就证明是快乐数
# [202] 快乐数
#
# @lc code=start
class Solution:
def isHappy(self, n: int) -> bool:
record = set()
while True:
n = self.get_sum(n)
if n == 1:
return True
if n in record:
return False
else:
record.add(n)
def get_sum(self,n:int )->int:
new_sum = 0
while n:
n,r = divmod(n,10)
new_sum += r ** 2
return new_sum