写一个算法判断一个数字是不是快乐数
快乐数由下面的过程定义:任何正数,用它数字的平方和替换它,重复这个过程直至结果为1,或者以一个环无线循环,环中的正数不包括1。这个过程以1结束就可以认为是快乐的数
Example:
Input: 19 Output: true Explanation: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1
1:快乐的数计算结果一定为1,不是快乐的数计算结果中一定存在环
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
numList = [n] #存放所有计算出来的数,用于判断是否存在环
while n!=1: #如该计算结果为1,说明该数是快乐的数
sum=0
for i in str(n):
sum += int(i)**2
if sum not in numList: #判断是否存在环
numList.append(sum)
else: #存在环就说明该数不是快乐的数
return False
n = sum
return True
算法题来自:https://leetcode-cn.com/problems/happy-number/description/