1. 程式人生 > >leetcode 202.Happy Number (python3 )

leetcode 202.Happy Number (python3 )

題目:

題目分析:首先,本題需要判定輸入的整數其各位數平方求和最終值是否為1 ?輸入整數位整型,返回值為布林型。

程式設計思路:

1.需要利用到迴圈實現每一次求和後判定是否為1 。

2.需要排除有可能出現死迴圈的狀況,經過幾次平方求和後,結果為某一個出現過的值

class Solution:
    def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """        
        mem = set()                #利用 set()集合,儲存平方求和後的數值
        while n != 1:              #利用 while 實現迴圈      
            n = sum([int(i)**2 for i in str(n)])    #通過str(n)調取輸入整數各個位數的值
            if n not in mem:       #若平方求和後的數值是首次出現,則新增進集合中
                mem.add(n)
            else:                  #若求和後數值,在集合中存在,則直接返回false,即出現死迴圈
                return False
        return True                #最終當n==1時,跳出while迴圈,返回true