1、题目描述
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1
2、题解
2.1、解法一
class Solution(object):
count = 0
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
if n == 1:
return True
l = []
while n:
a,b = divmod(n,10)
l.append(b)
n = a
# if len(l) ==1:
# return False
# else:
self.count += 1
if self.count >100:
return False
l.reverse()
print(l)
ret = 0
for i in l:
ret += i**2
if ret == 1:
return True
else:
ret = self.isHappy(ret)
return ret
2.2、解法二
class Solution(object):
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
temp = []
def get_add(n):
ret = 0
while n != 0:
g = n % 10
ret += g ** 2
n = int(n / 10)
return ret
while True:
n = get_add(n)
if n == 1:
return True
elif n in temp:
return False
else:
temp.append(n)