题目:
编写一个算法来判断一个数
n
是不是快乐数。「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果
n
是 快乐数 就返回true
;不是,则返回false
。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:n = 19
输出:true
解释:12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1
示例 2:输入:n = 2
输出:false
解法:
因为题目说了要么和为1,要么会循环,所以用集合记录出现过的数,如果重复出现就返回False。
知识点:
1.非空集合的创建:使用{}。
代码:
class Solution:def isHappy(self, n: int) -> bool:s = {n}while 1:t = 0for num in str(n):t += int(num) ** 2if t == 1:return Trueif t in s:return Falses.add(t)n = t