Python实现"快乐的数"的一种方法

写一个算法判断一个数字是不是快乐数

快乐数由下面的过程定义:任何正数,用它数字的平方和替换它,重复这个过程直至结果为1,或者以一个环无线循环,环中的正数不包括1。这个过程以1结束就可以认为是快乐的数

Example:

Input: 19
Output: true
Explanation: 
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

1:快乐的数计算结果一定为1,不是快乐的数计算结果中一定存在环

def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """
        numList = [n]    #存放所有计算出来的数,用于判断是否存在环
        while n!=1:     #如该计算结果为1,说明该数是快乐的数
            sum=0
            for i in str(n):
                sum += int(i)**2
            if sum not in numList:     #判断是否存在环
                numList.append(sum)
            else:       #存在环就说明该数不是快乐的数
                return False
            n = sum
        return True

算法题来自:https://leetcode-cn.com/problems/happy-number/description/

猜你喜欢

转载自blog.csdn.net/qiubingcsdn/article/details/82735538