Link: https://leetcode.com/problems/happy-number/

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

- 1
^{2}+ 9^{2}= 82 - 8
^{2}+ 2^{2}= 68 - 6
^{2}+ 8^{2}= 100 - 1
^{2}+ 0^{2}+ 0^{2}= 1

Solution1:

public class happy { public static boolean isHappy(int n) { int sum = 0; int div = 10; int mod = 10; while(n>0) { int tmp = n%mod; System.out.print(tmp+"\t"); sum += tmp*tmp; n /= div; } if(sum == 1) {return true;} else { return isHappy(sum); } } public static void main(String[] args) { isHappy(7); } }

Solution2:

public static boolean isHappy1(int n){ int newN = 0; HashSet set = new HashSet(); while(!set.contains(n)) { set.add(n); newN = 0; while(n != 0) { newN += (n%10) * (n%10); n /= 10; } n = newN; System.out.print(n+"\t"); if(n==1) return true; } return false; }

Advertisements