Write an algorithm to determine if a number is “happy”.
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
boolisHappy(int n){ if(n <= 0){ returnfalse; } while(n != 1){ int num = n; int sum = 0; while(num!=0){ sum = sum + (num%10)*(num%10); num = num / 10; } n = sum; if(n < 10 && n != 1){ returnfalse; } } returntrue; }
解决方案2(Python)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution(object): defisHappy(self, n): """ :type n: int :rtype: bool """ if(n <= 0): return while n != 1: num = n sum = 0 while num != 0: sum += (num%10) * (num%10) num /= 10 n = sum if n<10and n!=1: returnFalse returnTrue
解决方案3(Golang)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
func isHappy(n int) bool { intSeenMap := map[int]bool{} for ; n != 1 && !intSeenMap[n]; n, intSeenMap[n] = next(n), true { } return n == 1 }
func next(n int) int { result := 0 for n > 0 { result += (n%10) * (n%10) n = n / 10 } return result }