思想:
對輸入數據 把每個位數平方求和
得到結果如果是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))