(1)202.快乐数
题目描述:
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 True ;不是,则返回 False 。
解题思路:
直线可能没有终点
但是⚪永远会在原地打转,
记录每一次的变化值,并加入set集合,若循环中再次出现此值,说明环出现了
class Solution:
def isHappy(self, n: int) -> bool:
circleSet = set()
while True:
cnt = self.getSumFunc(n)
if cnt == 1:
return True
if cnt in circleSet:
return False
else:
circleSet.add(cnt)
n = cnt
def getSumFunc(self, val):
tempSum = 0
while val > 0:
tempSum += (val%10)**2
val //= 10
return tempSum