思想:
对输入数据 把每个位数平方求和
得到结果如果是1 就返回真 否则 对这个结果递归
啥时候事后返回假:
返回假 说明进入无限循环了。
啥时候会无限循环?
某一次求平方和的结果,之前得到过这个结果,那就会无限循环了。
所以,我把每次得到的结果 都存起来,如果后面发现某一次得到结果 在之前得到过,那就肯定无限循环了 返回假
1 class Solution: 2 def isHappy(self, n): 3 """
4 :type n: int 5 :rtype: bool 6 """
7 temp = [] 8 while True: 9 n = self.get_add(n) 10 if n == 1: 11 return True 12 elif n in temp: 13 return False 14 else: 15 temp.append(n) 16
17 def get_add(self, n): 18 ret = 0 19 while n != 0: 20 g = n % 10
21 ret += g ** 2
22 n = int(n / 10) 23 return ret 24
25
26
27 if __name__ == '__main__': 28 s = Solution() 29 print(s.isHappy(19))