题目在这:​​https://leetcode-cn.com/problems/happy-number/​

思路分析:

本题唯一不好想的点在于如何判断该数不是快乐数,也就是该数会无限循环。
通过观察可以发现,如果这个数在操作过程中重复出现了,或者等于了原始的数。则该操作会无限循环下去。

所以我们首先将所给数字变成列表型,让他可以遍历,然后每一位都平方,再相加。
在这个操作过程中看他是不是等于1 了 等于就是快乐数了,返回True。
如果重复出现或等于原始数了,则不是快乐数,返回False。

完整代码:

class Solution:
def isHappy(self, n: int) -> bool:
res = []
while True:
n_list = [int(x) for x in str(n)]
temp = 0
for i in n_list:
temp += i ** 2
if temp == 1:
return True
if temp == n or temp in res:
return False

res.append(temp)
n =

把所有的数都放在列表里,用于判断是否出现过。
使用列表推导式将int型变成列表用于遍历。
这句话: ​​​n_list = [int(x) for x in str(n)]​​ 即将int型的n先变成str型进入循环,然后变成int型推入列表。

提交:

力扣(leetcode) 202. 快乐数------------------提交击败了100%的用户。_python