问题描述:
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
1
2
+ 9
2
= 82
8
2
+ 2
2
= 68
6
2
+ 8
2
= 100
1
2
+ 0
2
+ 02 = 1
方法1:while循环每次计算每位的平方之和。当sum_ == 1 时return True,为了陷入死循环,设置list,每次sum_放进去,当再次发现相同的sum_时,说明已经计算过了,return FALSE
class Solution(object):
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
temp = []
while True:
sum_ = 0
while n // 10:
sum_ += (n % 10)**2
n = n // 10
sum_ += (n % 10)**2
if sum_ == 1:
return True
n = sum_
if sum_ in temp:
return False
temp.append(sum_)
2018-09-17 19:18:36