描述
写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
您在真实的面试中是否遇到过这个题? 是
样例
19 就是一个快乐数。
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
实现代码:
递归和非递归
class Solution: """ @param n: An integer @return: true if this is a happy number or false """ def isHappy(self, n): # write your code here self._hash = {n: n} return self.helper(n) def helper(self, n): temp = 0 while n: temp += (n % 10) ** 2 n = n // 10 if temp == 1: return True #如果temp在哈希表中,证明重复了,没有找到1,否则就将结果存入哈希表中 elif temp in self._hash: return False else: self._hash[temp] = temp return self.helper(temp) #------------------------------ class Solution: """ @param n: An integer @return: true if this is a happy number or false """ def isHappy(self, n): # write your code here _hash = set() while n != 1: if n in _hash: return False _hash[n] = n n = self.Next(n) return True def Next(self,n): result = 0 while n > 0: result += pow(n % 10, 2) n = n // 10 return result