标签:
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.
Example: 19 is a happy number
Naive Way: The statement is describing a recursive process. So it is obvious that the question want me to write a recursive method. The logic has been stated and clear. Base case (ending condition) is either n=1 or n has been visited. And since I need to mark whether a number has been visited, a hashset is required.
1 public class Solution { 2 Set<Integer> visited = new HashSet<Integer>(); 这个要定义在前面 3 public boolean isHappy(int n) { 4 // base case 5 if(n==1) return true; 6 // visited 7 if(visited.contains(n)) return false; 8 // main processing 9 int sum = 0; 10 visited.add(n); 11 while(n!=0){ 12 int lastDigit = n % 10; 13 sum += lastDigit * lastDigit; 14 n /= 10; 15 } 16 return isHappy(sum); 17 } 18 }
reference: http://siyang2leetcode.blogspot.com/2015/05/happy-number.html
标签:
原文地址:http://www.cnblogs.com/hygeia/p/4799835.html