編寫一個演算法判斷一個數是不是“快樂數”。
阿新 • • 發佈:2018-11-15
一個“快樂數”的定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為1,也可能是無限迴圈但始終變不到1.如果可以變為1,那麼這個數就是快樂數。
例項:
輸入:19
輸出:true
解釋:
1^2 + 9^2 = 82
8^2 + 2 ^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 +0^2 = 1
Way 1:
public int getNext(int num){ int result = 0; result = (num % 10)*(num % 10); num = num/10; if(num == 0){ return result; }else{ return result+getNext(num); } } public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.isHappy(19)); } }
Way2:
public class Solution{ public boolean isHappy(int n){ Set<Integer> set = new HashSet<>(); while(n!=1){ int flag = getNext(n); if(set.contains(flag)){ return false; }else{ set.add(flag); n = flag; } } return true; } //16 public int getNext(int num){ int result = 0; result = (num % 10)*(num % 10); num = num/10; if(num == 0){ return result; }else{ return result+getNext(num); } } public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.isHappy(1)); } }