编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
1**2 + 9**2 = 82
8**2 + 2**2 = 68
6**2 + 8**2 = 100
1**2 + 0**2 + 0**2 = 1
思路:循环让个位数平方和十位数平方相加,如果等于1,返回True
把每次的结果存进列表里,当遇到重复的数字时陷入死循环,返回-1(因为平方和永远大于0),返回False
list1 = []
def func(str1):
num = 0
for i in str1:
num = num + int(i) ** 2
if num in list1:
# print('flase')
return -1
list1.append(num)
return num
class Solution:
def isHappy(self, num):
"""
:type n: int
:rtype: bool
"""
str1 = str(num)
while num != 1:
num =func(str1)
if num == -1:
return 'flase'
str1 = str(num)
# print('ture')
return 'true'
s1 = Solution()
print(s1.isHappy(19))
可能是写的最蠢的一次了吧...