问题描述:
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 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
1 class Solution(object): 2 def isHappy(self, n): 3 """ 4 :type n: int 5 :rtype: bool 6 """ 7 temp = [] 8 while True: 9 sum_ = 0 10 while n // 10: 11 sum_ += (n % 10)**2 12 n = n // 10 13 sum_ += (n % 10)**2 14 if sum_ == 1: 15 return True 16 n = sum_ 17 if sum_ in temp: 18 return False 19 temp.append(sum_)
2018-09-17 19:18:36